我想在表中每列生成1个标签和1个文本框。我该怎么做?我认为这应该是对每一列说的话,在页面上添加标签和文本框。另外,我希望每个标签和文本框都基于列的名称来命名。
这就是我连接数据库的方式。我正在使用Visual Studio和C#。
using (SqlConnection sqlConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionNameHere"].ConnectionString))
{
sqlConn2.Open();
using (SqlCommand sqlCmd2 = new SqlCommand())
{
sqlCmd2.Connection = sqlConn2;
sqlCmd2.CommandType = System.Data.CommandType.Text;
sqlCmd2.CommandText = string.Format("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS mWHERE table_name = 'registrants');
sqlCmd2.ExecuteNonQuery();
using (SqlDataReader sqlReader = sqlCmd2.ExecuteReader())
{
//Some code here?
}
sqlConn2.Close();
}
}
}
}
ASP.NET Repeater Control是解决您问题的理想解决方案,您只需定义一个模板(针对您的情况下的标签和文本框),并将其进行相应的绑定。
定义这样的中继器控件:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="lblTest" runat="server" Text='<%# Eval("MyColumn") %>'></asp:Label>
<asp:TextBox ID="textTest" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
然后,像这样更改查询:-
DataTable table = new DataTable();
table.Columns.Add("MyColumn", typeof(string));
//Your rest code (connection object and all)
sqlCmd2.CommandText = "SELECT COLUMN_NAME AS MyColumn
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName";
sqlCmd2.Parameters.Add("@TableName",SqlDbType.NVarChar).Value = "registrants";
sqlConn2.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
DataRow tableRow = table.NewRow();
tableRow["MyColumn"] = reader["MyColumn"].ToString();
table.Rows.Add(tableRow);
}
Repeater1.DataSource = table;
Repeater1.DataBind();
}
另外,请注意,您不应将ExecuteNonQuery
其主要用于DML操作。使用ExecuteReader
将完成任务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句