Получился загадочный глюк DataGrid-a с EditCommandColumn. Один вариант срабатывает, второй — ни_в_какую. Может подскажете в чем причина глюка? или в какую сторону "копать"?
В обработчике
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.listNewForm2.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(listNewForm2_EditCommand);
this.Load += new System.EventHandler(this.Page_Load);
}
мы обработку события EditCommand привязываем к функции listNewForm2_EditCommand
private void listNewForm2_EditCommand(object source, DataGridCommandEventArgs e)
{
listNewForm2.EditItemIndex = e.Item.ItemIndex;
DataBindGrid();
}
Так вот глюк в чем — в первом варианте событие ПРОИСХОДИТ, во втором — нет!!!
Вариант 1:
<asp:DataGrid ID="listNewForm2" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Удалить" />
<asp:EditCommandColumn ButtonType=LinkButton UpdateText="Занести число" EditText="Редак.Порядок" CancelText="Отменить" />
<asp:BoundColumn DataField="orderID" HeaderText="Порядок на форме" />
<asp:BoundColumn DataField="razmerOnScreen" HeaderText="Размер на экране" ReadOnly="True" />
</Columns>
</asp:DataGrid>
Вариант 2:
если мы вместо
ButtonType=LinkButton, ставим
ButtonType="PushButton"
то событие EditCommand не происходит
<asp:DataGrid ID="listNewForm2" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Удалить" />
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="Занести число" EditText="Редак.Порядок" CancelText="Отменить" />
<asp:BoundColumn DataField="orderID" HeaderText="Порядок на форме" />
<asp:BoundColumn DataField="razmerOnScreen" HeaderText="Размер на экране" ReadOnly="True" />
</Columns>
</asp:DataGrid>
Здравствуйте, Аноним, Вы писали:
А> Получился загадочный глюк DataGrid-a с EditCommandColumn. Один вариант срабатывает, второй — ни_в_какую. Может подскажете в чем причина глюка? или в какую сторону "копать"?
А> В обработчике
А>А> override protected void OnInit(EventArgs e)
А> {
А> InitializeComponent();
А> base.OnInit(e);
А> }
А> private void InitializeComponent()
А> {
А> this.listNewForm2.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(listNewForm2_EditCommand);
А> this.Load += new System.EventHandler(this.Page_Load);
А> }
А>
А> мы обработку события EditCommand привязываем к функции listNewForm2_EditCommand
А>А> private void listNewForm2_EditCommand(object source, DataGridCommandEventArgs e)
А> {
А> listNewForm2.EditItemIndex = e.Item.ItemIndex;
А> DataBindGrid();
А> }
А>
А> Так вот глюк в чем — в первом варианте событие ПРОИСХОДИТ, во втором — нет!!!
А> Вариант 1:
А>А> <asp:DataGrid ID="listNewForm2" runat="server" AutoGenerateColumns="False">
А> <Columns>
А> <asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Удалить" />
А> <asp:EditCommandColumn ButtonType=LinkButton UpdateText="Занести число" EditText="Редак.Порядок" CancelText="Отменить" />
А> <asp:BoundColumn DataField="orderID" HeaderText="Порядок на форме" />
А> <asp:BoundColumn DataField="razmerOnScreen" HeaderText="Размер на экране" ReadOnly="True" />
А> </Columns>
А> </asp:DataGrid>
А>
А> Вариант 2:
А>если мы вместо ButtonType=LinkButton, ставим ButtonType="PushButton"
А>то событие EditCommand не происходит
А>А> <asp:DataGrid ID="listNewForm2" runat="server" AutoGenerateColumns="False">
А> <Columns>
А> <asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Удалить" />
А> <asp:EditCommandColumn ButtonType="PushButton" UpdateText="Занести число" EditText="Редак.Порядок" CancelText="Отменить" />
А> <asp:BoundColumn DataField="orderID" HeaderText="Порядок на форме" />
А> <asp:BoundColumn DataField="razmerOnScreen" HeaderText="Размер на экране" ReadOnly="True" />
А> </Columns>
А> </asp:DataGrid>
А>
а данные в DataGrid пихаются в PageLoad?
вот тут и косяк, пихай в PageInit, тогда все OK будет
если интересно почему так происходит, смотри Trace страницы после PostBack'a
Положи линкбаттон на форму и все исправится

Раб, который обожает своего хозяина, уже не раб, а холуй.
В.И. Ульянов.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение