簡體   English   中英

Telerik Radgrid rebind()拋出未將對象引用設置為對象錯誤的實例

[英]Telerik radgrid rebind() throws Object reference not set to instance of object error

我在單個頁面上有兩個rad Grid視圖。 當我從左側網格刪除項目時,應將其添加到右側網格,反之亦然。 我正在使用rad ajax管理器。 請看下面的代碼。

<telerik:RadGrid runat="server" ID="grdAvailableIOptions" OnNeedDataSource="grdAvailableIOptions_NeedDataSource"
        AllowPaging="false" Width="500px" OnRowDrop="grdAvailableIOptions_RowDrop" AllowMultiRowSelection="true" RetainExpandStateOnRebind="true"
        PageSize="30" AutoGenerateColumns="false" OnItemCreated="grdAvailableIOptions_ItemCreated" OnItemCommand="grdAvailableIOptions_ItemCommand">
        <MasterTableView DataKeyNames="ID" Width="100%" TableLayout="Fixed" ShowHeader="false" GroupsDefaultExpanded="false">
            <GroupByExpressions>
                <telerik:GridGroupByExpression>
                    <SelectFields>
                        <telerik:GridGroupByField FieldAlias="-" FieldName="GroupName"></telerik:GridGroupByField>
                    </SelectFields>
                    <GroupByFields>
                        <telerik:GridGroupByField FieldName="SortOrder"></telerik:GridGroupByField>
                    </GroupByFields>
                </telerik:GridGroupByExpression>
            </GroupByExpressions>

            <Columns>
                <telerik:GridDragDropColumn HeaderStyle-Width="18px" Visible="false">
                </telerik:GridDragDropColumn>
                <telerik:GridBoundColumn DataField="Name" DataType="System.String" HeaderText="Name"
                    SortExpression="Name" UniqueName="Name">
                </telerik:GridBoundColumn>

                <telerik:GridBoundColumn DataField="Price" DataType="System.String" HeaderText="Price" HeaderStyle-HorizontalAlign="Right"
                    SortExpression="Price" UniqueName="Price" DataFormatString="{0:c}" ItemStyle-HorizontalAlign="Right">
                </telerik:GridBoundColumn>
                <telerik:GridTemplateColumn HeaderText="Delete" AllowFiltering="false" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <asp:ImageButton ID="lnkAddItem" ToolTip="Add Machine Item" ImageUrl="~/Content/Images/Add New.png" CommandName="AddItem" CommandArgument=' <%# Eval("ID") %>' runat="server"></asp:ImageButton>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
        </MasterTableView>
        <ClientSettings AllowRowsDragDrop="True">
            <Selecting AllowRowSelect="True" EnableDragToSelectRows="false"></Selecting>
            <ClientEvents OnRowDropping="onRowDropping"></ClientEvents>
        </ClientSettings>

    </telerik:RadGrid>

<telerik:RadGrid runat="server" AllowPaging="false" ID="grdSelectedOptions" OnNeedDataSource="grdSelectedOptions_NeedDataSource"
        Width="550px" AllowMultiRowSelection="true" AutoGenerateColumns="false"
        OnItemDataBound="grdSelectedOptions_ItemDataBound" OnItemCommand="grdSelectedOptions_ItemCommand" OnItemCreated="grdSelectedOptions_ItemCreated">
        <MasterTableView DataKeyNames="ID" Width="100%" ShowHeader="false">
            <GroupByExpressions>
                <telerik:GridGroupByExpression>
                    <SelectFields>
                        <telerik:GridGroupByField FieldAlias="-" FieldName="GroupName"></telerik:GridGroupByField>
                    </SelectFields>
                    <GroupByFields>
                        <telerik:GridGroupByField FieldName="SortOrder"></telerik:GridGroupByField>
                    </GroupByFields>
                </telerik:GridGroupByExpression>
            </GroupByExpressions>
            <SortExpressions>
                <telerik:GridSortExpression FieldName="SortOrder" SortOrder="Ascending" />
            </SortExpressions>
            <Columns>
                <telerik:GridDragDropColumn HeaderStyle-Width="18px" Visible="false">
                </telerik:GridDragDropColumn>
                <telerik:GridTemplateColumn HeaderText="Item" UniqueName="MachineItem">
                    <ItemTemplate>
                        <asp:Label runat="server" ID="lblItem" Visible="false"></asp:Label>
                        <telerik:RadComboBox runat="server" ID="RadComboBox1" Width="100%" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged">
                        </telerik:RadComboBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn HeaderText="Quantity" UniqueName="Quantity" Display="false">
                    <ItemTemplate>
                        <asp:TextBox runat="server" ID="txtQuantity" AutoPostBack="true" Width="30px" Text='<%#Eval("Quantity") %>' OnTextChanged="txtQuantity_TextChanged"></asp:TextBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn DataField="Price" HeaderText="Price" HeaderStyle-HorizontalAlign="Right"
                    SortExpression="Price" UniqueName="Price" ItemStyle-HorizontalAlign="Right">
                    <ItemTemplate>
                        <asp:Label runat="server" ID="lblPrice" Text='<%#Eval("Price","{0:c}") %>'></asp:Label>
                        <asp:HiddenField runat="server" ID="hdnPrice" Value='<%#Eval("Price") %>'></asp:HiddenField>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn HeaderText="Delete" AllowFiltering="false">
                    <ItemTemplate>
                        <asp:ImageButton ID="lnkDelete" Visible="false" ToolTip="Delete Machine Item" ImageUrl="~/Common/Images/del.gif" CommandName="Delete" CommandArgument=' <%# Eval("ID") %>' runat="server" OnClientClick="javascript:if (!confirm('Are you sure you want to delete Machine Item ?')) {
                                         return false;
                                     }"></asp:ImageButton>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
            <NoRecordsTemplate>
                <div style="height: 30px; cursor: pointer;">
                    No items to view
                </div>
            </NoRecordsTemplate>

        </MasterTableView>
        <ClientSettings AllowRowsDragDrop="True">
            <Selecting AllowRowSelect="True" EnableDragToSelectRows="false"></Selecting>
            <ClientEvents OnRowDropping="onRowDropping"></ClientEvents>
        </ClientSettings>
    </telerik:RadGrid>

這是rad ajax經理

<telerik:AjaxSetting AjaxControlID="grdAvailableIOptions">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="grdAvailableIOptions"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="grdSelectedOptions"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="msg"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="lblEstimateTotal"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="lblConfirmationText"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="modalPopup"></telerik:AjaxUpdatedControl>
        </UpdatedControls>
    </telerik:AjaxSetting>
    <telerik:AjaxSetting AjaxControlID="grdSelectedOptions">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="grdSelectedOptions"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="grdAvailableIOptions"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="msg"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="lblEstimateTotal"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="lblConfirmationText"></telerik:AjaxUpdatedControl>
            <telerik:AjaxUpdatedControl ControlID="modalPopup"></telerik:AjaxUpdatedControl>
        </UpdatedControls>
    </telerik:AjaxSetting>

這是我收到此錯誤的背后的代碼

 protected void grdAvailableIOptions_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == "AddItem")
        {
            try
            {
                int ID = Convert.ToInt32(e.CommandArgument.ToString());

                MachineItems tmpMachineItems = GetMachineItem(AvailableIOptionsList, ID);

                if (itemRules.Any(i => i.MachineItemID == ID))
                {
                    btnConfirm.CommandArgument = ID.ToString();
                    lblConfirmationText.InnerHtml = identifyRules(tmpMachineItems);

                    // When there is a rule of allowed subgroups then this text will be empty.
                    // Dont show popup just add the item and make the related items available for selection
                    if (string.IsNullOrEmpty(lblConfirmationText.InnerHtml))
                    {
                        SelectedOptionsList.Add(tmpMachineItems);
                        AvailableIOptionsList.Remove(tmpMachineItems);
                        lblEstimateTotal.Text = (Decimal.Parse(lblEstimateTotal.Text, numberStyle) + tmpMachineItems.Price).ToString("c");
                        CheckForAllowedSubgroups();
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "key", "showRulesModal();", true);
                    }
                }
                else
                {
                    SelectedOptionsList.Add(tmpMachineItems);
                    AvailableIOptionsList.Remove(tmpMachineItems);
                }

                grdSelectedOptions.Rebind();
                grdAvailableIOptions.Rebind();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }        

我在這時遇到錯誤** grdAvailableIOptions.Rebind(); **。 它正確調用了Need數據源方法,但是在調用了Need數據源方法之后,它立即引發未設置為實例錯誤的對象引用。

誰能指出我在這里做錯了什么?

我也想知道是否可以僅使用ajax管理器來刷新/重新綁定網格,而無需使用radgrid.rebind()方法?

經過大量檢查后,我發現有一個空項目被添加到我的數據源中,這導致了此問題。 因此,請始終檢查空對象,然后再將它們添加到數據源中。

希望有人發現此信息有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM