judah9107 Ответов: 1

Как я могу сделать в GridView значение checkboxfield, когда я нажимаю кнопку?


У меня есть gridview со столбцом "checkboxfield", но когда я нажимаю кнопку asp.net кнопка, все флажки установлены в false из-за обратной передачи.

Я хочу получить значения флажков, когда нажимаю кнопку в своем коде с помощью C#.

Возможно ли это?

РЕШЕНИЕ:
Моя ошибка состояла в том, чтобы использовать столбец "checkboxfield" в gridview, но лучше использовать "templatefield" в качестве решения 1 в этом посте.

ОШИБКА:
<asp:CheckBoxField DataField="ESTPROopc" HeaderText="OPC"/>


Решение: Решение 1 в этом посте является правильным.
<asp:TemplateField HeaderText="OPC">
    <ItemTemplate>
       <asp:CheckBox ID="ESTPROopc" runat="server" Checked='<%#Eval("ESTPROopc")%>'/>
    </ItemTemplate>
</asp:TemplateField>


bool ischecked = ((CheckBox)row.FindControl("ESTPROopc")).Checked;


Что я уже пробовал:

CheckBox chkOpc = row.Cells[4].Controls[0] as CheckBox;
bool check = chkOpc.Checked;

Richard Deeming

Вы повторно связываете сетку в Page_Load функция без проверки IsPostBack сначала собственность?

judah9107

Нет, посмотрите мою Page_Load:

protected void Page_Load(отправитель объекта, EventArgs e)
{
if (! IsPostBack)
{
// загрузить GridView
loadEstrucProyectosEjemplo (lstEstrucProyectosEjemplo);
}
}

1 Ответов

Рейтинг:
12

csharpbd

Пожалуйста, проверьте ниже код, я его проверил.

КОД ASPX:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chk" runat="server" Checked='<%#Eval("CheckValue") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button ID="btnGetCheck" runat="server" Text="Get Check" OnClick="btnGetCheck_Click" />


ASPX.КОД CS:

class CheckExample
{
    public string Title { get; set; }
    public bool CheckValue { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<CheckExample> list = new List<CheckExample>();
        list.Add(new CheckExample() { Title = "A", CheckValue = false });
        list.Add(new CheckExample() { Title = "B", CheckValue = false });
        list.Add(new CheckExample() { Title = "C", CheckValue = false });
        list.Add(new CheckExample() { Title = "D", CheckValue = false });
        list.Add(new CheckExample() { Title = "E", CheckValue = false });

        GridView1.DataSource = list;
        GridView1.DataBind();
    }
}

protected void btnGetCheck_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        bool chkValue = ((CheckBox)row.FindControl("chk")).Checked;
    }
}