首页 > 解决方案 > 在 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

            }

标签: c#asp.net

解决方案


我制作了一个示例和小代码来演示它如何在小范围内工作。我已经选择了 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”。


推荐阅读