Событие для галочки на gridview? - PullRequest
2 голосов
/ 20 января 2009

У меня есть столбец флажка на моем сеточном представлении в приложении Windows. Я хочу событие, как только кто-то нажмет на флажок.

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 января 2009

Новый ответ, потому что теперь я знаю, что это Windows Form

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

Допустим, первая ячейка является флажком:

а Второй текст ...

мой код для Form1.cs

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dgv.DataSource = new testData[] {
            new testData{ CheckBox = true, Name = "One" },
            new testData{ CheckBox = true, Name = "Two" },
            new testData{ CheckBox = false, Name = "Three" },
            new testData{ CheckBox = false, Name = "Four" }            
        };
    }

    private void dgv_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.ColumnIndex == 0) // It's the Checkbox Column
        {
            DataGridViewRow dgvr = dgv.Rows[e.RowIndex];
            MessageBox.Show(String.Format("Row {0} was cliked ({1})", (e.RowIndex + 1).ToString(), 
                dgvr.Cells[1].Value));
        }
    }
}

public class testData
{
    public Boolean CheckBox { get; set; }
    public String Name { get; set; }
}

дизайн ... просто перетащите компонент DataGridView в форму окна с именем dgv и в событиях дважды щелкните событие CellMouseClick

2 голосов
/ 20 января 2009

Вот пример:

<%@ Page Language="C#" AutoEventWireup="true" %>

<script runat="server">
    public class Item
    {
        public string Name { get; set; }
        public bool Checked { get; set; }
    }

    protected void Changed(object sender, EventArgs e)
    {
        CheckBox checkBox = sender as CheckBox;
        Response.Write(checkBox.Checked.ToString());
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            grid.DataSource = new[] 
            { 
                new Item() { Name="1", Checked = true },
                new Item() { Name="2", Checked = false } 
            };
            grid.DataBind();
        }
    }
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Eval("Name") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="check" runat="server" Checked='<%# Eval("Checked") %>' OnCheckedChanged="Changed" AutoPostBack="true" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...