如果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();
答案 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消息。检查此链接以手动查看添加列。