为什么我的数据没有显示在我的GridView中?

时间:2014-02-28 15:50:56

标签: c# asp.net gridview

我有一个数据库,其中有useridproblemnamestatus列。我正从ArrayList中的数据库中检索此数据并将其返回。现在要在GridView中显示我已经使用了DataTable,在DataTable中我放了三列,我只想通过创建一行来显示我在这些列中保存在ArrayList中的数据。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    ArrayList myArrayList = ConvertDataSetToArrayList();

    // Display each item of ArrayList
    DataTable dt = new DataTable();
    dt.Columns.Add("User Id");
    dt.Columns.Add("Problem Name");
    dt.Columns.Add("Status");

    foreach (Object row in myArrayList)
    {
        dt.Rows.Add();
        dt.Rows[dt.Rows.Count - 1]["User Id"] = ((DataRow)row)["userid"].ToString();
        dt.Rows[dt.Rows.Count - 1]["Problem Name"] = ((DataRow)row)   ["problemname"].ToString();
        dt.Rows[dt.Rows.Count - 1]["Status"] = ((DataRow)row)["status"].ToString();

    }

    GridView1.DataSource =dt;
    GridView1.DataBind();
}

public ArrayList ConvertDataSetToArrayList()
{
    string con = " ";
    con = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
    SqlConnection objsqlconn = new SqlConnection(con);
    objsqlconn.Open();
    SqlCommand cmd = new SqlCommand("SELECT userid,problemname,status FROM   problemtable", objsqlconn);
    cmd.ExecuteNonQuery();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter myAdapter = new SqlDataAdapter();
    myAdapter.SelectCommand = cmd;

    DataSet myDataSet = new DataSet();
    myAdapter.Fill(myDataSet);

    ArrayList myArrayList = new ArrayList();
    foreach (DataRow dtRow in myDataSet.Tables[0].Rows)
    {
        myArrayList.Add(dtRow);
    }
    objsqlconn.Close();
    return myArrayList;
}

这是我的HTML:

<body>
<form id="form1" runat="server">
<div>

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
        <Columns>
            <asp:TemplateField HeaderText="cdd">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox2" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

</div>
</form>
</body>

为什么我的数据没有显示在我的GridView中?

2 个答案:

答案 0 :(得分:1)

您需要将数据绑定到gridview中的特定控件。例如,您需要在gridview itemtemplate中添加标签以将数据绑定到。这是一个例子:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
    <asp:TemplateField HeaderText="cdd">
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox2" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="User Id">
        <ItemTemplate>
            <asp:Label ID="lbl_userid" runat="server" Text='<%# Eval("User Id") %>' CssClass="lbl"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Problem Name">
        <ItemTemplate>
            <asp:Label ID="lbl_problemname" runat="server" Text='<%# Eval("Problem Name") %>' CssClass="lbl"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="status">
        <ItemTemplate>
            <asp:Label ID="lbl_status" runat="server" Text='<%# Eval("Status") %>' CssClass="lbl"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

答案 1 :(得分:0)

我同意ArrayList是一个糟糕的选择,但是,无论你如何绑定数据,你都需要告诉gridview它应该显示什么。您可以使用内联标记或使用onitemdatabound触发器来执行此操作。我建议你查看一些gridviews的例子。