как автоматически поставить галочку на шаблоне при нажатии кнопки редактирования в gridview, c # - PullRequest
1 голос
/ 23 июня 2009

у меня есть вид сетки, и у меня есть флажок шаблона ... Теперь у меня есть кнопка редактирования, удаления.

После того, как я нажму кнопку редактирования в gridview .... Этот флажок шаблона должен быть автоматически отмечен == true ... то, что автоматически отмечен, должен быть выбран при нажатии кнопки редактирования в представлении сетки. скажи этот код ... Спасибо

1 Ответ

0 голосов
/ 23 июня 2009

Вот пример кода для вида сетки, который заполняет набор объектов Person.

Это код разметки GridView

<asp:GridView runat="server" ID="grdView" AutoGenerateColumns="False" 
        onrowcancelingedit="grdView_RowCancelingEdit" 
        onrowdatabound="grdView_RowDataBound" onrowediting="grdView_RowEditing">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" />
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:TemplateField HeaderText="IsActive Template">
                <ItemTemplate>
                    <asp:Label runat="server" ID="lblIsActive"></asp:Label>
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:CheckBox ID="chkIsActive" runat="server" />
                </EditItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowEditButton="True" />
        </Columns>
    </asp:GridView>

и это код, который обрабатывает эти события

    public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        BindGrid();
    }

    private void BindGrid()
    {
        List<Person> persons = new List<Person>
        {
            new Person{ID = 1, IsActive = true, Name = "Test 1"},
            new Person{ID = 2, IsActive = true, Name = "Test 2"},
            new Person{ID = 3, IsActive = true, Name = "Test 3"}
        };

        grdView.DataSource = persons;
        grdView.DataBind();
    }

    protected void grdView_RowEditing(object sender, GridViewEditEventArgs e)
    {
        grdView.EditIndex = e.NewEditIndex;

        grdView.DataBind();
    }

    protected void grdView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        grdView.EditIndex = -1;
        grdView.DataBind();
    }

    protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        Person p = e.Row.DataItem as Person;
        if (p == null)
            return;
        var lbl = e.Row.Cells[2].FindControl("lblIsActive") as Label;
        if (lbl != null)
        {
            lbl.Text = p.IsActive ? "Yes" : "No";
        }
        else
        {
            var chkIsActive = e.Row.Cells[2].FindControl("chkIsActive") as CheckBox;
            if (chkIsActive != null)
            {
                if (p != null)
                    chkIsActive.Checked = p.IsActive;
            }
        }
    }


}

class Person
{
    public int ID { get; set; }

    public string Name { get; set; }

    public bool IsActive { get; set; }
}

Итак, как вы видите, событие RowDataBound отвечает за запись правильного значения в поле шаблона.

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