Использовать строковую переменную, полученную через al oop, для ссылки на имя элемента управления? - PullRequest
0 голосов
/ 06 августа 2020

Я пробовал искать другие ответы, но безуспешно. Я написал al oop, который проходит через серию из 6 текстовых полей с именами txtserial1, txtserial2, txtserial3, et c. Я хотел получить значения каждого текстового поля и добавить в DataTable, который затем можно было бы перебрать, чтобы добавить каждое значение в базу данных. Вот код, который у меня есть сейчас, я пробовал много вариантов, но ничего не помогло. Как я могу пропустить oop через поля и получить каждое значение в DataTable? Кроме того, не все 6 блоков будут заполняться каждый раз, иногда только 1, иногда все 6. Спасибо !!! :)

Таблица, содержащая текстовые поля:

<table style="width: 718px;">
    <tr>
        <td style="width: 221px;">
            <asp:Label ID="lblserial1" runat="server" Text="Serial One:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial1" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
        <td style="width: 221px;">
            <asp:Label ID="lblserial4" runat="server" Text="Serial Four:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial4" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td style="width: 221px;">
            <asp:Label ID="lblserial2" runat="server" Text="Serial Two:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial2" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
        <td style="width: 221px;">
            <asp:Label ID="lblserial5" runat="server" Text="Serial Five:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial5" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td style="width: 221px;">
            <asp:Label ID="lblserial3" runat="server" Text="Serial Three:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial3" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
        <td style="width: 221px;">
            <asp:Label ID="lblserial6" runat="server" Text="Serial Six:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="txtSerial6" runat="server" Width="230px" Height="22px"></asp:TextBox>
        </td>
    </tr>
</table>

Код позади:

public void LogHB()
{
    DataTable dt = new DataTable("HBserials");
    dt.Columns.Add("hbserial");
    int j = Convert.ToInt32(ddlNumofhb.Text);
    for (int i = 1; i < (j + 1); i++)
    {
        string textbox = FindControl("txtserial" + i + ".Text").ToString();                
        dt.Rows.Add(textbox);
    }

    foreach (DataRow row in dt.Rows)
    {
        string hbserial = row["hbserial"].ToString();
        try
        {
            SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["HMT2DBCS"].ConnectionString);
            using (SqlCommand command = new SqlCommand("spHBcheckin", connection))
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@order_id", txtorder_id.Text);
                command.Parameters.AddWithValue("@hbserial", hbserial);
                command.Connection.Open();
                command.ExecuteNonQuery();
                connection.Close();
            }
        }
    }
}
...