Флажок C # ASP.NET DataGrid - PullRequest
       66

Флажок C # ASP.NET DataGrid

2 голосов
/ 21 февраля 2012

У меня есть сетка редактируемых данных, которая извлекает данные из запроса SQL, одно из полей имеет ответ Y или N, поэтому необходимо установить флажок, однако в режиме редактирования оно отображается как поле и ошибки, если я помещаю это в

<asp:CheckBox ID="ALFSUPR" runat="server" Checked='<%# Bind("pric_c_alfsupreq") %>'></asp:CheckBox>

Существует ли простой способ преобразования текстового поля в CheckBox, значение которого при проверке = Y

Спасибо

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

Попробуйте что-то вроде этого:

Checked='<%# Eval("pric_c_alfsupreq").ToString().Equals("Y") %>'>

UPDATE:

Поскольку вы используете старую DataGrid (в настоящее время вы должны использовать DataGridView ), в вашем определении DataGrid должно быть что-то похожее на это:

<asp:DataGrid ID="Grid" runat="server" PageSize="5" AllowPaging="True"
              DataKeyField="EmpId" AutoGenerateColumns="False" CellPadding="4"
              ForeColor="#333333" GridLines="No" 
              OnPageIndexChanged="Grid_PageIndexChanged"
              OnCancelCommand="Grid_CancelCommand" 
              OnDeleteCommand="Grid_DeleteCommand"
              OnEditCommand="Grid_EditCommand"
              OnUpdateCommand="Grid_UpdateCommand">

См. OnUpdateCommand ...

Теперь метод, который должен запускаться при применении обновления данных строки:

protected void Grid_UpdateCommand(object source, DataGridCommandEventArgs e)
{
    con = new SqlConnection(ConfigurationManager.AppSettings["connect"]);

    char value = "N"

    // You'll have to change the index here to point to the CheckBox you have in
    // your DataGrid.
    // It can be on index 1 Controls[1] or 2 Controls[2]. Only you know this info.
    if(((CheckBox)e.Item.Cells[0].Controls[0]).Checked == true)
    {
         value = "Y";;
    }

    cmd.Parameters.Add("@pric_c_alfsupreq", SqlDbType.Char).Value = value;

    cmd.CommandText = "Update command HERE";

    cmd.Connection = con;

    cmd.Connection.Open();

    cmd.ExecuteNonQuery();

    cmd.Connection.Close();

    Grid.EditItemIndex = -1;
}

Надеюсь, вы поняли идею. Если вам нужен этот код в любой другой момент, вы можете поместить его в OnEditCommand, OnDeleteCommand и т.д ...

2 голосов
/ 21 февраля 2012

Если ваш код требует немного больше логики, чем ответ Саймона, вы также можете создать защищенный метод в своем коде и вызвать его.

protected bool GetCheckboxValue(String value)
{
    //put your logic here
    return value.ToLower() == "y";
}

, а затем позвоните с

Checked='<%# GetCheckboxValue("pric_c_alfsupreq") %>'>
2 голосов
/ 21 февраля 2012

Не могу вспомнить мои дни WebForms, но, возможно, изменить

Checked='<%# Bind("pric_c_alfsupreq") %>'>

до

Checked='<%# Eval("pric_c_alfsupreq") == "Y" %>'>

При обновлении, я думаю, вам придется обработать событие GridView.RowUpdating, а затем извлечь свойство Checked, преобразовать его в «Да» или «Нет».

...