asp.net - Gridview,asp.net中的动态数据不起作用?
问题描述
当我使用下面的代码时,我的 gridview (ID=Gridview2) 对象将使用硬编码的数据源完美填充。我想使用一个动态生成的数据表(在调试数据表时成功填充了行和列)。当我尝试将动态数据绑定到我的其他 gridview 对象 (ID=Gridview1) 并验证它是否将数据源作为我新创建的数据表时,屏幕上什么也没有出现?
我究竟做错了什么?我是否需要为动态代码定义模板才能工作?
<asp:GridView ID="GridView2" runat="server" AllowSorting="True" BackColor="#DEBA84"
BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3"
CellSpacing="2" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true"
EmptyDataText="No results found" BackColor="#DEBA84" BorderColor="#DEBA84"
BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2"
AllowSorting="True" AutoGenerateColumns="True">
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>
代码隐藏:
protected void btnSearch_Click(object sender, EventArgs e)
{
string domainToQueryFor = "domain";
string pinToQueryFor = "account";
DBConnectionlib.DBClass dbReader = new DBConnectionlib.DBClass();
dbReader.connectionInformation = @"Server=tcp:XXXXXXXXX,1433 ;Database=" + databaseName + ";Trusted_Connection=false;UID=" + databaseUserName + ";Pwd=" + databasePassword + "; ApplicationIntent=ReadWrite;Timeout=60;MultiSubnetFailover=True";
dbReader.tableName = tableName;
string currentSqlQuery = "select * from " + dbReader.tableName + " WHERE domain like '" + domainToQueryFor + "' and pin like '" + pinToQueryFor + "'";
dbReader.queryStatement = currentSqlQuery;
List<string> results = dbReader.readFromSqlDatabaseReturnList();
DataTable dt = createDataTable(results);
GridView1.DataSource = dt;
GridView1.DataBind();
}
解决方案
我必须添加它以使其动态描绘
foreach (System.Data.DataColumn item in dt.Columns)
{
BoundField nameColumn = new BoundField();
nameColumn.DataField = item.ColumnName;
nameColumn.HeaderText = item.ColumnName;
GridView1.Columns.Add(nameColumn);
}
基本上没有明确说明/添加的列名,gridview 将不会显示。它们可能也可以使用 <%bind%> 命令在 html 代码中进行硬编码,但我希望它更具动态性,所以我按照上述方式进行了操作。
推荐阅读
- r - 根据向量中包含的多个条件创建向量
- kubernetes - 如何先创建命名空间?
- guice - 构造函数有附加参数时关于guice构造注入的问题
- r - R Shiny plot透明背景:低分辨率(轴文本和标签周围的白色像素,以及标题)
- reporting-services - SSRS - 将分组数据放在同一行
- excel - SharePoint 公式:[已创建]+60 天 = 延期日期(但需要是工作日)
- powerbi - PowerBI 中选项卡/页面的基于角色的安全性(不是行级安全性)
- python - 以 x 的倍数从 200 倒计时到 0。X 是用户输入的值(python)
- c# - 发送带有附件的加密电子邮件
- elasticsearch - 我们可以从弹性搜索查询响应中删除数据跟踪吗