Кнопка редактирования GridView вызывает исключение - PullRequest
1 голос
/ 24 июня 2011

У меня есть шаблон команды для кнопок delete и edit.

Когда я нажимаю кнопку edit и заполняю данные правильного типа данных для каждого поля, это будет работать очень хорошо.

Однако, когда я заполняю данные неправильного типа данных в полях, в браузере веб-страниц будет вызвано исключение. Как я могу исправить это, какой-нибудь код за вами, ребята, может предложить, и где его разместить?

<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" 
                    CellPadding="4" DataKeyNames="ProductCode" DataSourceID="SqlProductmaster" 
                    ForeColor="#333333" GridLines="None">
                    <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                    <Columns>
                        <asp:BoundField DataField="ProductCode" HeaderText="ProductCode" 
                            ReadOnly="True" SortExpression="ProductCode" />
                        <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
                            SortExpression="ProductName" />
                        <asp:BoundField DataField="Category" HeaderText="Category" 
                            SortExpression="Category" />
                        <asp:BoundField DataField="SellingPrice" HeaderText="SellingPrice" 
                            SortExpression="SellingPrice" />
                        <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
                            SortExpression="Quantity" />
                        <asp:BoundField DataField="BrandName" HeaderText="BrandName" 
                            SortExpression="BrandName" />
                        <asp:BoundField DataField="ReOrderQty" HeaderText="ReOrderQty" 
                            SortExpression="ReOrderQty" />
                        <asp:BoundField DataField="ReOrderLevel" HeaderText="ReOrderLevel" 
                            SortExpression="ReOrderLevel" />
                        <asp:BoundField DataField="Ordered" HeaderText="Ordered" 
                            SortExpression="Ordered" />
                        <asp:BoundField DataField="Allocated" HeaderText="Allocated" 
                            SortExpression="Allocated" />
                        <asp:BoundField DataField="FreeQty" HeaderText="FreeQty" 
                            SortExpression="FreeQty" />
                        <asp:TemplateField ShowHeader="False">
                            <EditItemTemplate>
                                <asp:Button ID="Update" runat="server" CausesValidation="True" 
                                    CommandName="Update" Text="Update" />
                                &nbsp;<asp:Button ID="Cancel" runat="server" CausesValidation="False" 
                                    CommandName="Cancel" Text="Cancel" />
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:Button ID="edit" runat="server" CausesValidation="False" 
                                    CommandName="Edit" Text="Edit" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>
                                <asp:Button ID="Delete" runat="server" CausesValidation="False" 
                                    CommandName="Delete" Text="Delete" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <FooterStyle BackColor="#990000" Font-Bold="false" ForeColor="White" />
                    <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#FFCC66" Font-Bold="False" ForeColor="Navy" />
                    <HeaderStyle BackColor="#990000" Font-Bold="False" ForeColor="White" />
                    <AlternatingRowStyle BackColor="White" />
                </asp:GridView> 

Ответы [ 2 ]

0 голосов
/ 27 июня 2011

Вместо использования полей шаблона вы можете переопределить функции, которые позволяют редактировать BoundFields. Для этого попробуйте что-то вроде этого:

<asp:GridView runat="server" ID="gvCurrentLocations" ... OnRowEditing="rowEditing" OnRowCancelingEdit="rowCancel" OnRowUpdating="rowUpdating">
    <Columns>
        <asp:BoundField DataField="locationname" HeaderText="Location Name" />
        <asp:TemplateField HeaderText="Action">
            <ItemTemplate>
                <asp:CheckBox ID="cbToRemove" runat="server" CssClass="remove" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="boundpdas" HeaderText="Assigned To" ReadOnly="true" />
        <asp:CommandField ShowEditButton="true" UpdateText="Save"  />
    </Columns>
    <EmptyDataTemplate>
        There are currently no locations.
    </EmptyDataTemplate>
</asp:GridView>

Обратите внимание, что второе связанное поле доступно только для чтения, это предотвратит его редактирование. Поле команды в 4-м столбце предоставляет кнопку «Изменить», которая изменяет связанное поле на текстовое поле.

В своем бэкэнд-коде вы можете получить новые значения, открыв словарь 'NewValues' параметра GridViewUpdateEventArgs.

0 голосов
/ 24 июня 2011

вы можете поставить проверку для этого конкретного элемента управления и никогда не генерировать исключение.

...