AutoGenerateColumns =“False”导致数据绑定上的空RadGrid

时间:2013-09-20 11:54:33

标签: asp.net telerik-grid

如果AutoGenerateColumns="True"则网格将与数据集绑定并显示数据,但如果设置为false将不绑定并将显示NoRecords值,即使数据表有行。

是什么导致这种情况,我该如何解决?

pas.MasterTableView.AutoGenerateColumns =false;
DataTable dt = new DataTable();

dt.Columns.Add("SNo");
dt.Columns.Add("Name");
dt.Columns.Add("Add");

DataRow dsa = dt.NewRow();

dsa["SNo"] = "1";
dsa["Name"] = "Karthik";
dsa["Add"] = "Hyd";

dt.Rows.Add(dsa);

dsa = dt.NewRow();
dsa["SNo"] = "2";
dsa["Name"] = "krishna";
dsa["Add"] = "Hyd";
dt.Rows.Add(dsa);

dsa = dt.NewRow();
dsa["SNo"] = "3";
dsa["Name"] = "kailas";
dsa["Add"] = "Hyd";
dt.Rows.Add(dsa);

dsa = dt.NewRow();
dsa["Sno"] = "4";
dsa["Name"] = "Billa";
dsa["Add"] = "Hyd";
dt.Rows.Add(dsa);

dsa = dt.NewRow();
dsa["Sno"] = "5";
dsa["Name"] = "asdf";
dsa["Add"] = "qwer";

dt.Rows.Add(dsa);

pas.DataSource = dt;
pas.DataBind();

2 个答案:

答案 0 :(得分:2)

设置为AutoGenerateColumns的{​​{1}}属性指示网格使用网格中数据库返回的任何列,因此如果关闭它(True),则除非您定义它们,否则网格将没有列,如下所示:

False

如果您不希望网格中的数据库查询中的所有列,或者您不喜欢列的名称,则会使用<Columns> <telerik:GridBoundColumn DataField="ProductID" DataType="System.Int32" HeaderText="Product ID" SortExpression="ProductID" UniqueName="ProductID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ProductName" HeaderText="Product Name" SortExpression="ProductName" UniqueName="ProductName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="UnitPrice" DataType="System.Decimal" HeaderText="Unit Price" SortExpression="UnitPrice" UniqueName="UnitPrice"> </telerik:GridBoundColumn> </Columns> ,因为它使用数据库字段名称(即{{ 1}})。

答案 1 :(得分:1)

如果将AutoGenerateColumns属性设置为false并且没有手动定义的列,则RadGrid中将没有列。由于没有列,因此没有记录,因为记录是给定列的单元格。由于网格中没有行,因此将显示NoRecordsToDisplay消息。检查此链接以手动查看添加列。

click here for deatils