当我 运行 我的代码时 Gridview 没有显示

Gridview is not displaying while i run my code

我想在文本框中显示三列字段作为下拉列表和其他字段 format.I 已经编写了代码来显示我数据库中的下拉列表值,但它不是 working.I 已附上我的代码供您参考

    <asp:GridView ID="Gv1" runat="server"  AutoGenerateColumns="False">
                    <Columns>
                        <asp:TemplateField HeaderText="FacultyName">
                            <ItemTemplate>
                                <asp:Label ID="lblfaculty" runat="server" Text='<%%# Eval("facultyname") %>>' Visible="false" />
                                <asp:DropDownList ID="ddlfaculty" runat="server" OnSelectedIndexChanged="ddlfaculty_SelectedIndexChanged"></asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Subject">
                            <ItemTemplate>
                                <asp:Label ID="lblsubject" runat="server" Text='<%%# Eval("subject") %>>' Visible="false" />
                                <asp:DropDownList ID="ddlsubject" runat="server" OnSelectedIndexChanged="ddlsubject_SelectedIndexChanged"></asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Subject">
                            <ItemTemplate>
                                <asp:Label ID="lblsubject" runat="server" Text='<%%# Eval("subject") %>>' Visible="false" />
                                <asp:DropDownList ID="ddlsubject" runat="server" OnSelectedIndexChanged="ddlsubject_SelectedIndexChanged1"></asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="lblsubject" runat="server" Text='<%%# Eval("sethour") %>>' Visible="false" />
                                <asp:TextBox ID="ddlsethour" runat="server"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="lblcount" runat="server" Visible="false" />
                                <asp:TextBox ID="Count" runat="server"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

代码隐藏:

public partial class transhonorarium : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}

protected void ddlfaculty_SelectedIndexChanged(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        SqlDataAdapter cmd = new SqlDataAdapter("select facultyname from faculty", con);
        DataTable dt = new DataTable("dt");
        cmd.Fill(dt);
        Gv1.DataSource = dt;
        Gv1.DataBind();
    }
}

protected void ddlsubject_SelectedIndexChanged(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        SqlDataAdapter cmd = new SqlDataAdapter("select subject from assign where facultyname=@facultyname", con);
        DataTable dt = new DataTable("dt");
        cmd.Fill(dt);
        Gv1.DataSource = dt;
        Gv1.DataBind();
    }
}
}

当您的数据发生变化时,调用您的 Gridview 的 DataBind() 方法。

我会这样做:

protected override void OnPreRender(Eventargs e)
{
  base.OnPreRender(e);
  GV1.DataBind();
}

你需要在这里改变一件事。

  1. AutoGenerateColumns = true。因此,您将能够看到分配的列及其数据。

其次,

您需要 Bind 根据需要在 Page_load 或您想要的地方使用您的 Gridview。这是用于页面加载。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Gv1.DataSource = Somesource;
        Gv1.DataBind();
    }
}

Bind Data

public void BindData()
{
    SqlCommand comd = new SqlCommand("SELECT * FROM Yourtablename", con);
    SqlDataAdapter da = new SqlDataAdapter(comd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    GV1.DataSource = dt;
    GV1.DataBind();
}

希望对您有所帮助

为了填充下拉列表,您应该实施 _RowDataBound 事件并根据您的选择更新数据集,您还应该为下拉对象实施 RowCommand 事件。

顺便说一句。在 ddlsubject_SelectedIndexChanged 中,您还需要将参数添加到 sql 命令中,以使 sql 字符串正常工作,

希望这对您有所帮助。