Gridview不显示,而我运行我的代码

本文关键字:运行 我的 代码 显示 Gridview | 更新日期: 2023-09-27 17:54:49

我想显示三列字段作为下拉列表和其他文本框格式。我写的代码显示下拉列表值从我的数据库,但它不工作。我已附上我的代码供您参考

    <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不显示,而我运行我的代码

你需要改变一件事。

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

其次,

您需要在Page_load或您想要的地方Bind您的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();
}

希望有帮助

在数据发生变化时调用Gridview的DataBind()方法

我会这样做:

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

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

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