Привязка данных ASP.NET GridView перед обработчиками событий - PullRequest
1 голос
/ 13 декабря 2011

Я работаю с сеткой, привязанной к ObjectDataSource.В этой сетке есть один столбец с DropDownList (AutoPostBack равен true) и Rating.Предполагается, что эти элементы управления позволяют пользователю немедленно изменять данные.

В отличие от RowCommand (edit: in ButtonField), обработчики элементов управления (SelectedIndexChanged и RatingChanged соответственно) срабатывают после привязки данных.Таким образом, у меня либо не будет актуальных данных, либо мне придется снова связываться по телефону DataBind.Ничто из этого не так круто.Элементы управления не поддерживают команды строк.

Как лучше всего справиться с этим?Я неправильно понимаю некоторые концепции или неправильно обрабатываю события?

Здесь у меня есть код:

public partial class _Default : System.Web.UI.Page
{
    protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
    {
        e.ObjectInstance = new MyDataSource();
    }

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        // before selecting with ButtonField
        // after selecting with TemplateField + Control Event
        Debug.WriteLine("Command Handler");
    }

    protected void Unnamed2_Click(object sender, EventArgs e)
    {
        // Button event handler, after selecting
        Debug.WriteLine("Button Click Handler");
    }

    protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        // Selecting invoked by ASP.NET data binding
        Debug.WriteLine("Selecting");
    }
}

1 Ответ

0 голосов
/ 13 декабря 2011

Вы должны установить источник данных и привязать данные к сетке в явном виде в событии OnLoadComplete страницы.

...