Событие ASP.NET Gridview RowUpdating не запускается - PullRequest
2 голосов
/ 17 декабря 2010

HTML-страница:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
            <ContentTemplate>
                <asp:GridView ID="Grd_Threshold" runat="server" CellPadding="4" ForeColor="#333333"
                    GridLines="Both" AutoGenerateColumns="false" EmptyDataText="No Records." PageSize="8"
                    AllowPaging="true" OnPageIndexChanging="Grd_Threshold_PageIndexChanging" OnRowCommand="Grd_Threshold_RowCommand"
                    DataKeyNames="ID" AutoGenerateEditButton="true" OnRowCancelingEdit="Grd_Threshold_RowCancelingEdit" OnRowEditing="Grd_Threshold_RowEditing"
                    OnRowUpdating="Grd_Threshold_RowUpdating">
                    <Columns>                        
                        <asp:TemplateField HeaderText="No.">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Name" ItemStyle-Width="150px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("CLNAME") + ", " + Eval("CFNAME") +" " +Eval("CMNAME")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Doctor" ItemStyle-Width="150px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("DOCTORNAME")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Item Name" ItemStyle-Width="150px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("INAME")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Item Form" ItemStyle-Width="100px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("IFORM")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Item Strength" ItemStyle-Width="100px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("ISTRG")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Order Date" ItemStyle-Width="100px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("ORDERDATE")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Price" ItemStyle-Width="80px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("PRICE")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Quantity" ItemStyle-Width="80px">
                            <EditItemTemplate>
                                <asp:TextBox ID="Txt_Qty" runat="server" Width="50px" Text='<%# Eval("QTY")%>'></asp:TextBox>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("QTY")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="User" ItemStyle-Width="100px">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("USERID")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <RowStyle BackColor="#E3EAEB" />
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <EditRowStyle BackColor="#7C6F57" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>

CS-код:

 protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Title = "Dashboard";
                if (!Master.Page.IsPostBackEventControlRegistered)
                {
                    BindGrid();
                }
            }
            catch (Exception ex)
            {
                Common.WriteLog(ex);
            }
        }

        private void BindGrid()
        {
            try
            {
                if (SessionUtility.DashboardRecords == null || SessionUtility.DashboardRecords.Rows.Count == 0)
                {
                    string WebServiceUrl = SessionUtility.WebServiceUrl + "/GetAllOrders/";
                    JsonArrayCollection ReqResponse = Common.GetWebServiceResponse_MultipleValues(WebServiceUrl, "GET");
                    DataTable Patients = Common.ConvertJsonArrayObjectCollectionToDataTable(ReqResponse);

                    SessionUtility.DashboardRecords = Patients;
                }

                if (SessionUtility.UserRight != "1")
                {
                    //Grd_Threshold.Columns[0].Visible = false;
                    Grd_Threshold.AutoGenerateEditButton = false;
                }
                else if (SessionUtility.UserRight == "1")
                {
                    Grd_Threshold.AutoGenerateEditButton = true;
                }
                Grd_Threshold.DataSource = SessionUtility.DashboardRecords;
                Grd_Threshold.DataBind();
                UpdatePanel1.Update();
            }
            catch (Exception ex)
            {
                Common.WriteLog(ex);
            }
        }

Привет всем,

вышесобытие EDIT только с письменным кодом запускается, и это только один раз после этого UPDATE, ОТМЕНА событие не запускается.Что я делаю не так? Все, что я хочу сделать, это изменить цвет GridRow на основе значения, введенного в поле QTY.

Ответы [ 2 ]

3 голосов
/ 24 декабря 2010

Я разобрался в проблеме.Событие не было запущено из-за тех же идентификаторов, которые я дал лейблу в каждой строке.Надеюсь, это кому-нибудь пригодится.

0 голосов
/ 17 декабря 2010

Не уверен насчет вашего использования IsPostBackEventControlRegistered - я не видел, чтобы он использовался ранее, но, вероятно, вы стираете событие обновления на DataBind() каждый раз в Page_Load().

Page_Load запускается каждый раз при загрузке страницы, которая затем изменяет действия страницы путем сброса сетки.

Попробуйте обернуть элемент управления в:

if(!IsPostBack)
{
  // bind
}

, чтобы он делал это только при первой загрузке страницы.

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