Необходимо получить значение ячейки в виде сетки - PullRequest
0 голосов
/ 16 августа 2011

Я не могу получить значение ячейки в виде сетки для использования в хранимой процедуре.Вот мой aspx:

<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false" SkinID="GridView" DataKeyNames="Check Config">
            <Columns>
                <asp:BoundField HeaderText="Config ID" DataField="Check Config"></asp:BoundField>
                <asp:BoundField HeaderText="Check Configuration" DataField="Check Configuration" />
                <asp:BoundField HeaderText="Shift" DataField="Shift" />
                <asp:BoundField HeaderText="Earliest Time" DataField="Earliest Time" />
                <asp:BoundField HeaderText="Alarm Time" DataField="Alarm Date" />
                <asp:BoundField HeaderText="Disposition" DataField="Disposition" />
                <asp:TemplateField HeaderText="Disable">
                    <ItemTemplate>
                        <asp:CheckBox runat="server" ID="RowLevelCheckBox" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

А вот мой код, в котором я пытаюсь получить значение первого столбца / ячейки в виде сетки для параметра хранимой процедуры.В этом случае я хочу получить значение «Config ID», но каждый раз получаю 0.Прошло много времени с тех пор, как я вернулся в ASP.NET, но этот проект требует этого.

try
        {
            foreach (GridViewRow dr in gvData.Rows)
            {
                CheckBox chk = (CheckBox)dr.Cells[6].FindControl("RowLevelCheckBox");
                if (chk.Checked)
                {
                    recordCount += 1;
                    int theConfigID = Convert.ToInt32(dr.Cells[0].FindControl("Config ID").ToString());
                    //cancel these alarms in DB 
                    command.Parameters.Add(new SqlParameter("@CHECK_SCHEDULE_ID", theConfigID));
                    command.ExecuteNonQuery();

                    //return status and msg
                    lblStatusMessage.ForeColor = System.Drawing.Color.DarkGreen;
                    lblStatusMessage.Text = string.Format("{0} alarm(s) were successfully cancelled.", recordCount);
                    lblStatusMessage.Visible = true;
                }
            }
        }

Ответы [ 2 ]

1 голос
/ 16 августа 2011

как насчет просто dr.Cells [0] .Text?

0 голосов
/ 16 августа 2011

Я бы рекомендовал не использовать пробелы в именах столбцов и использовать свойство DataKeyNames в gridview для доступа к идентификатору.Таким образом, вам даже не нужно отображать идентификатор для пользователя.

foreach(GridViewRow dr in gvData.Rows)
{
    CheckBox chk = (CheckBox)dr.Cells[6].FindControl("RowLevelCheckBox");
    if (chk.Checked)
    {
        recordCount += 1;
        int theConfigID = (int) gvData.DataKeys[dr.RowIndex].Value;
        //cancel these alarms in DB 
        command.Parameters.Add(new SqlParameter("@CHECK_SCHEDULE_ID", theConfigID));
        command.ExecuteNonQuery();

        //return status and msg
        lblStatusMessage.ForeColor = System.Drawing.Color.DarkGreen;
        lblStatusMessage.Text = string.Format("{0} alarm(s) were successfully cancelled.", recordCount);
        lblStatusMessage.Visible = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...