c# - 在 asp.net 中使用子字符串搜索控件
问题描述
我有一个表格,其中员工输入了相关的详细信息。父亲,母亲和他/她拥有的孩子的信息。而保存在数据库中的编辑信息信息以如下形式再次绑定。表的结构有列-i_empid、c_name、c_dob ,i_age,c_relation。我想减少代码行。请帮助我。因为 txtName,txtName1,txtName3,txtName4 具有相同的 txtName 子字符串。这在将 id 绑定到相同的循环时会有所帮助吗
cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@empid", AutoId);
cmd.Parameters.AddWithValue("@type", 2);
dtTemp = dlObj.getDataTable("UID_EmpRelation",cmd);
if (dtTemp != null && dtTemp.Rows.Count > 0)
{
#region [if 5]
if (dtTemp.Rows.Count == 5)
{
txtName.Text = dtTemp.Rows[0]["c_name"].ToString();
txtDob.Text = dtTemp.Rows[0]["c_dob"].ToString();
txtAge.Text = dtTemp.Rows[0]["i_age"].ToString();
ddlRelation.SelectedValue = dtTemp.Rows[0]["c_relation"].ToString();
txtName1.Text = dtTemp.Rows[1]["c_name"].ToString();
txtDob1.Text = dtTemp.Rows[1]["c_dob"].ToString();
txtAge1.Text = dtTemp.Rows[1]["i_age"].ToString();
ddlRelation1.SelectedValue = dtTemp.Rows[1]["c_relation"].ToString();
txtName2.Text = dtTemp.Rows[2]["c_name"].ToString();
txtDob2.Text = dtTemp.Rows[2]["c_dob"].ToString();
txtAge2.Text = dtTemp.Rows[2]["i_age"].ToString();
ddlRelation2.SelectedValue = dtTemp.Rows[2]["c_relation"].ToString();
txtName3.Text = dtTemp.Rows[3]["c_name"].ToString();
txtDob3.Text = dtTemp.Rows[3]["c_dob"].ToString();
txtAge3.Text = dtTemp.Rows[3]["i_age"].ToString();
ddlRelation3.SelectedValue = dtTemp.Rows[3]["c_relation"].ToString();
txtName4.Text = dtTemp.Rows[4]["c_name"].ToString();
txtDob4.Text = dtTemp.Rows[4]["c_dob"].ToString();
txtAge4.Text = dtTemp.Rows[4]["i_age"].ToString();
ddlRelation4.SelectedValue = dtTemp.Rows[4]["c_relation"].ToString();
}
#endregion
#region [if 4]
if (dtTemp.Rows.Count == 4)
{
txtName.Text = dtTemp.Rows[0]["c_name"].ToString();
txtDob.Text = dtTemp.Rows[0]["c_dob"].ToString();
txtAge.Text = dtTemp.Rows[0]["i_age"].ToString();
ddlRelation.SelectedValue = dtTemp.Rows[0]["c_relation"].ToString();
txtName1.Text = dtTemp.Rows[1]["c_name"].ToString();
txtDob1.Text = dtTemp.Rows[1]["c_dob"].ToString();
txtAge1.Text = dtTemp.Rows[1]["i_age"].ToString();
ddlRelation1.SelectedValue = dtTemp.Rows[1]["c_relation"].ToString();
txtName2.Text = dtTemp.Rows[2]["c_name"].ToString();
txtDob2.Text = dtTemp.Rows[2]["c_dob"].ToString();
txtAge2.Text = dtTemp.Rows[2]["i_age"].ToString();
ddlRelation2.SelectedValue = dtTemp.Rows[2]["c_relation"].ToString();
txtName3.Text = dtTemp.Rows[3]["c_name"].ToString();
txtDob3.Text = dtTemp.Rows[3]["c_dob"].ToString();
txtAge3.Text = dtTemp.Rows[3]["i_age"].ToString();
ddlRelation3.SelectedValue = dtTemp.Rows[3]["c_relation"].ToString();
}
#endregion
#region [if 3]
if (dtTemp.Rows.Count == 3)
{
txtName.Text = dtTemp.Rows[0]["c_name"].ToString();
txtDob.Text = dtTemp.Rows[0]["c_dob"].ToString();
txtAge.Text = dtTemp.Rows[0]["i_age"].ToString();
ddlRelation.SelectedValue = dtTemp.Rows[0]["c_relation"].ToString();
txtName1.Text = dtTemp.Rows[1]["c_name"].ToString();
txtDob1.Text = dtTemp.Rows[1]["c_dob"].ToString();
txtAge1.Text = dtTemp.Rows[1]["i_age"].ToString();
ddlRelation1.SelectedValue = dtTemp.Rows[1]["c_relation"].ToString();
txtName2.Text = dtTemp.Rows[2]["c_name"].ToString();
txtDob2.Text = dtTemp.Rows[2]["c_dob"].ToString();
txtAge2.Text = dtTemp.Rows[2]["i_age"].ToString();
ddlRelation2.SelectedValue = dtTemp.Rows[2]["c_relation"].ToString();
}
#endregion
#region [if 2]
if (dtTemp.Rows.Count == 2)
{
txtName.Text = dtTemp.Rows[0]["c_name"].ToString();
txtDob.Text = dtTemp.Rows[0]["c_dob"].ToString();
txtAge.Text = dtTemp.Rows[0]["i_age"].ToString();
ddlRelation.SelectedValue = dtTemp.Rows[0]["c_relation"].ToString();
txtName1.Text = dtTemp.Rows[1]["c_name"].ToString();
txtDob1.Text = dtTemp.Rows[1]["c_dob"].ToString();
txtAge1.Text = dtTemp.Rows[1]["i_age"].ToString();
ddlRelation1.SelectedValue = dtTemp.Rows[1]["c_relation"].ToString();
}
#endregion
#region [if 1]
if (dtTemp.Rows.Count == 1)
{
txtName.Text = dtTemp.Rows[0]["c_name"].ToString();
txtDob.Text = dtTemp.Rows[0]["c_dob"].ToString();
txtAge.Text = dtTemp.Rows[0]["i_age"].ToString();
ddlRelation.SelectedValue = dtTemp.Rows[0]["c_relation"].ToString();
}
#endregion
}
解决方案
我制作了一个示例和小代码来演示它如何在小范围内工作。我已经选择了 5 个文本框,名称分别为 txtName1、txtName2、...、txtName5。现在为了获得输入的文本,我按从 1 到 5 的数字循环。
这是网络表单:
<form id="form1" runat="server">
Name 1: <asp:TextBox ID="txtName1" runat="server" /><br />
Name 2: <asp:TextBox ID="txtName2" runat="server" /><br />
Name 3: <asp:TextBox ID="txtName3" runat="server" /><br />
Name 4: <asp:TextBox ID="txtName4" runat="server" /><br />
Name 5: <asp:TextBox ID="txtName5" runat="server" /><br />
<asp:Button ID="btnShow" Text="Show Names" runat="server" OnClick="btnShow_Click" /><br />
<asp:Literal ID="litNames" runat="server" />
</form>
这是按钮单击 C# 代码:
protected void btnShow_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 5; i++)
{
var name = (TextBox)this.FindControl("txtName" + i);
litNames.Text += name.Text;
}
}
以类似的方式,您可以按如下方式减少代码:
cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@empid", AutoId);
cmd.Parameters.AddWithValue("@type", 2);
dtTemp = dlObj.getDataTable("UID_EmpRelation",cmd);
if (dtTemp != null && dtTemp.Rows.Count > 0)
{
for(var i = 0; i <= dtTemp.Rows.Count; i++)
{
var name = (TextBox)this.FindControl("txtName" + (i == 0 ? "" : i));
var dob = (TextBox)this.FindControl("txtDob" + (i == 0 ? "" : i));
var age = (TextBox)this.FindControl("txtAge" + (i == 0 ? "" : i));
var relation = (DropDownList)this.FindControl("ddlRelation" + (i == 0 ? "" : i));
name.Text = dtTemp.Rows[i]["c_name"].ToString();
dob.Text = dtTemp.Rows[i]["c_dob"].ToString();
age.Text = dtTemp.Rows[i]["i_age"].ToString();
relation.SelectedValue = dtTemp.Rows[i]["c_relation"].ToString();
}
}
如果 this.FindControl 有问题,请使用 Form.FindControl。我假设您的 ddlRelation 是“asp:DropDownList”。
推荐阅读
- excel - SharePoint Excel 公式不适用于其他 SharePoint Excel
- sql - TSQL-将日期拆分为月份
- php - 在 While 循环中将值从一个 PHP 页面传递到另一个而不影响 URL
- python - 字段“person_id”需要一个数字但得到“”
- formula - 在 NetSuite 保存的搜索中删除 http:// 或 https:// 和尾随 /
- npm - 如何从 node_modules 文件夹升级单个文件而不是升级整个包
- node.js - app.use 是处理快速表单数据的最佳实践吗?
- javascript - 检测外部链接何时完成加载
- python - 如何在 Python 调试器(PyCharm)中执行 n 步(迭代)?
- javascript - 应用程序投入生产后,如何在本地主机上运行开发 http 服务器并使用 Google OAuth 2 进行身份验证?