【问题标题】:GridView is not binding C#GridView 没有绑定 C#
【发布时间】:2014-11-06 03:59:42
【问题描述】:

我正在使用 GridView 并尝试将数据绑定到此 GridView,但我遇到了不寻常的问题,这是我的代码:

GridView的绑定方法:

private void BindDataSource()
    {
        SqlConnection con = new         SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
        string queryString6 = "";
        string items = "";
        if (lb_add_col.Items.Count > 0)
        {
            foreach (ListItem listItem in lb_add_col.Items)
            {
                if (listItem.Selected == true)
                {
                    items += listItem.Text + ",";
                }
            }
        }
        items = items.TrimEnd(',');
        queryString6 = "SELECT "+items+" from " +ddl_tables.Items[0].Text;
        System.Data.SqlClient.SqlCommand sqlCmd6 = new System.Data.SqlClient.SqlCommand(queryString6, con);
        System.Data.SqlClient.SqlDataAdapter dataAdapter6 = new System.Data.SqlClient.SqlDataAdapter(sqlCmd6);
        System.Data.DataSet dataSet6 = new System.Data.DataSet();
        dataAdapter6.Fill(dataSet6);
        string[] columns = items.Split(',');
        for (int i = 0; i < dataSet6.Tables[0].Rows.Count; i++)
        {
            order.Add(new Orders(columns.Contains("id") ? Convert.ToInt32(dataSet6.Tables[0].Rows[i]["id"]) : 0, columns.Contains("name") ? dataSet6.Tables
            [0].Rows[i]["name"].ToString() : "N/A", columns.Contains("month") ? dataSet6.Tables[0].Rows[i]["month"].ToString() : "N/A", columns.Contains("effiecency") ? Convert.ToInt32(dataSet6.Tables[0].Rows[i]
            ["effiecency"]) : 0, columns.Contains("latitude") ? Convert.ToInt32(dataSet6.Tables[0].Rows[i]["latitude"]) : 0, columns.Contains("longitude") ? Convert.ToInt32(dataSet6.Tables[0].Rows[i]
            ["longitude"]) : 0));

        }

        this.OrdersGrid.DataSource = order;
        this.OrdersGrid.DataBind();
    }

从上面的方法顺序显示数据但 GridView 没有绑定。

我正在调用此方法的按钮单击事件:

protected void btn_add_col_Click(object sender, EventArgs e)
    {

        Syncfusion.JavaScript.Models.Column sd;
        foreach (ListItem listItem in lb_add_col.Items)
        {
            if (listItem.Selected == true)
            {

                sd = new Syncfusion.JavaScript.Models.Column();
                if (listItem.Text == "id")
                {
                    sd.IsPrimaryKey = true;
                }
                sd.Field = listItem.Text;
                sd.HeaderText = listItem.Value;
                sd.Width = 90;
                sd.TextAlign = Syncfusion.JavaScript.TextAlign.Right;
                this.OrdersGrid.Columns.Add(sd);
            }
        }

        BindDataSource();
    }

【问题讨论】:

  • 你有没有调试过你的代码,你的“订单”在 for 循环之后包含了一些值?
  • 是的,我已经检查过了,它总是在循环后显示一些值,但是当我将此“订单”分配为 DataSource 时,GridView 没有绑定。
  • 订单是您的通用列表吗?您在哪里调用此代码?页面加载时?
  • yes order 是通用列表,我已经创建了一个绑定 GridView 的方法,我在 Button click 事件上调用了这个方法。
  • 您是否检查了断点以确保数据来自数据库?

标签: c# asp.net gridview data-binding syncfusion


【解决方案1】:

如果在循环执行后订单包含值,则数据源将绑定到网格。但是 Grid 不包含您在按钮单击中定义的列,它返回网格数据源中的所有列。 Grid 只显示了您在 bindDataSource 方法中定义的列,

【讨论】:

  • 欢迎来到 StackOverflow。您能否发布有关如何更改代码的建议?
【解决方案2】:

如果dataSet6.Tables[0].Rows.Count 为零,则 GridView 将进行数据绑定,但不会有数据。

【讨论】:

  • No dataSet6.Tables[0].Rows.Count 总是大于 0。
  • @NeerajPurohit 要尝试的另一件事是 AutoGenerateColumns 是否设置为 true?
  • 其实我用的是第三方工具,在他们的GridView控件中“AutoGenerateColumns”属性不存在。
  • 好吧,看在上帝的份上,你浪费了很多人的时间。将第三方控件的供应商名称放入标签列表中。
  • 其实我还以为是它的绑定问题,和控件有关系吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多