C# 添加依赖于sql表的控件?
大家好,我正在做一个小项目,我在一个基于SQL问题表的页面上添加控件,这个表会随着时间的推移而增长。我只是想分享代码,看看是否有更好的方法,或者是否有专家可以插话,让我了解未来的问题。代码如下:C# 添加依赖于sql表的控件?,c#,.net,asp.net,dynamic,C#,.net,Asp.net,Dynamic,大家好,我正在做一个小项目,我在一个基于SQL问题表的页面上添加控件,这个表会随着时间的推移而增长。我只是想分享代码,看看是否有更好的方法,或者是否有专家可以插话,让我了解未来的问题。代码如下: protected void Page_Load(object sender, EventArgs e) { try { SqlParameter[] paramz = new SqlParameter[1];
protected void Page_Load(object sender, EventArgs e)
{
try
{
SqlParameter[] paramz = new SqlParameter[1];
paramz[0] = new SqlParameter("@c_id", 1);
dt = SqlHelper.ExecuteDataTable(ConfigurationManager.ConnectionStrings["sql"].ToString(), CommandType.StoredProcedure, "get_Questions", paramz);
clinicName.Text = "<b>" + dt.Rows[0]["Clinic Name"].ToString();
for(int row = 0; row <= dt.Rows.Count; row++)
{
if (row == dt.Rows.Count) //if we're on the last question put a break for spacing(this could be fixed with styling)
{
Literal alit = new Literal();
alit.Text = "<br/>";
questionsPanel.Controls.Add(alit);
}
else
{
addQuestion(dt.Rows[row], row);
}
}
}
catch (Exception err)
{
Response.Write(err.Message);
}
}
private void addQuestion(DataRow row, int i)
{
Label lbl = new Label();
lbl.Text = row["question"].ToString();
questionsPanel.Controls.Add(lbl);
Literal lit = new Literal();
lit.Text = "<br/>";
questionsPanel.Controls.Add(lit);
TextBox txt = new TextBox();
txt.ID = "txt" + i.ToString();
questionsPanel.Controls.Add(txt);
Literal lit2 = new Literal();
lit2.Text = "<br/>";
questionsPanel.Controls.Add(lit2);
}
受保护的无效页面加载(对象发送方,事件参数e)
{
尝试
{
SqlParameter[]paramz=新的SqlParameter[1];
paramz[0]=新的SqlParameter(“@c_id”,1);
dt=SqlHelper.ExecuteDataTable(ConfigurationManager.ConnectionString[“sql”].ToString(),CommandType.StoredProcess,“获取问题”,参数Z);
clinicName.Text=”“+dt.Rows[0][“诊所名称”].ToString();
对于(int row=0;row使用中继器控件:
ASPX代码:
<asp:Repeater id="repData" runat="server">
<ItemTemplate>
<asp:Label id="lblQuestion" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "question") %>' />
<br />
<asp:TextBox id="lblAnswer" runat="server" />
</ItemTemplate>
<FooterTemplate>
<br />
</FooterTemplate>
</asp:Repeater>
使用中继器控件:
ASPX代码:
<asp:Repeater id="repData" runat="server">
<ItemTemplate>
<asp:Label id="lblQuestion" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "question") %>' />
<br />
<asp:TextBox id="lblAnswer" runat="server" />
</ItemTemplate>
<FooterTemplate>
<br />
</FooterTemplate>
</asp:Repeater>
如果控件使用或参与ViewState,则必须确保在每次回发时以相同的顺序将相同的控件添加到ViewState。对象添加到ViewState的顺序取决于控件树中控件的顺序。如果控件使用或参与ViewState,则必须确保在每次回发时都以相同的顺序将相同的控件添加到ViewState。对象添加到ViewState的顺序取决于控件树中控件的顺序