0

所需系统:我正在尝试在 Telerik 中创建一个主详细信息网格,如果用户在主网格的下拉列表中更改他/她的选择,则会出现在详细信息网格中他/她当前行下方的行,如果他/她的选择再次改变它会消失。

背景信息:该系统旨在允许最终用户(加油站审计员)检查加油站,如果他/她碰巧发现违规行为,他/她会立即确定应该采取什么行动。我决定创建带有下拉菜单的清单,如果用户发现违规,他/她将更改下拉列表,并显示由于违规而必须执行的程序。

问题:我正在尝试使用主网格中的 selectedindexchanged 创建一个事件,具体取决于下拉列表选择。如果下拉列表选择“违规”,则该行将出现在详细信息网格中,否则它将消失。我用来将主从行相互映射的值称为“SRS”。

当尝试使用变量“rowIndex”获取行索引时,我发现一个关于从一种类型更改为另一种类型执行我的类型转换的错误。我已经严格尝试解决这个问题,但没有任何结果。

如果有人可以提供代码来解决我的问题,我将不胜感激

注意:我将突出显示有问题的代码行

vb代码(有问题的代码):

 Protected Sub SqlDataSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlDataSource.Selecting

End Sub

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

**PROBLEMATIC LINE** ------------------------>     Dim rowIndex As Integer = CType(CType(sender, RadDropDownList).Parent.Parent, GridViewRow).RowIndex



      Dim SRSText As String = RadGrid1.MasterTableView.Items(rowIndex).Cells(3).Text


        If sender.SelectedValue = "in violation" Then

            SqlDataSource1.SelectParameters.Add(":SRSText", SRSText)

            RadGrid1.MasterTableView.DetailTables(0).DataSource = SqlDataSource1
            RadGrid1.MasterTableView.DetailTables(0).DataBind()

        Else
        End If

    End Sub
End Class

随附的 ASPX 代码,以获取更多信息:

<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false"
    CodeFile="Default.aspx.vb" Inherits="_Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js">
            </asp:ScriptReference>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js">
            </asp:ScriptReference>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js">
            </asp:ScriptReference>
        </Scripts>
    </telerik:RadScriptManager>
    <telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server">
    </telerik:RadStyleSheetManager>
    <telerik:RadTextBox ID="RadTextBox1" runat="server" AutoPostBack="True" LabelWidth="64px"
        Resize="None" Text="please enter the PFS number" Width="160px">
    </telerik:RadTextBox>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    </telerik:RadAjaxManager>
    <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM &quot;CHECKLIST&quot;">
    </asp:SqlDataSource>
    <p>
        &nbsp;</p>
    <telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0" DataSourceID="SqlDataSource"
        GridLines="None" AllowMultiRowSelection="True" AutoGenerateColumns="False">
        <ExportSettings>
            <Pdf>
                <PageHeader>
                    <LeftCell Text=""></LeftCell>
                    <MiddleCell Text=""></MiddleCell>
                    <RightCell Text=""></RightCell>
                </PageHeader>
                <PageFooter>
                    <LeftCell Text=""></LeftCell>
                    <MiddleCell Text=""></MiddleCell>
                    <RightCell Text=""></RightCell>
                </PageFooter>
            </Pdf>
        </ExportSettings>
        <ClientSettings EnablePostBackOnRowClick="True" EnableRowHoverStyle="True">
            <Selecting AllowRowSelect="True" />
        </ClientSettings>
        <MasterTableView DataKeyNames="INSPECTIONNO" DataSourceID="SqlDataSource">
            <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
            <RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
                <HeaderStyle Width="20px"></HeaderStyle>
            </RowIndicatorColumn>
            <ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
                <HeaderStyle Width="20px"></HeaderStyle>
            </ExpandCollapseColumn>
             <DetailTables>

                                        <telerik:GridTableView AutoGenerateColumns="false"  DataSourceID="SqlDataSource1"

                                            Width="100%">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<ParentTableRelation>

                                                <telerik:GridRelationFields DetailKeyField="SRS" MasterKeyField="SRS"></telerik:GridRelationFields>

                                            </ParentTableRelation>

<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn>

<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn>

<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>

<BatchEditingSettings EditType="Cell"></BatchEditingSettings>

<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
                                        </telerik:GridTableView> </DetailTables>
            <Columns>
                <telerik:GridBoundColumn DataField="PFSNO" DataType="System.Decimal" FilterControlAltText="Filter PFSNO column"
                    HeaderText="PFSNO" SortExpression="PFSNO" UniqueName="PFSNO">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="INSPECTIONNO" DataType="System.Decimal" FilterControlAltText="Filter INSPECTIONNO column"
                    HeaderText="INSPECTIONNO" ReadOnly="True" SortExpression="INSPECTIONNO" UniqueName="INSPECTIONNO">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="INPECTIONDATENTIME" FilterControlAltText="Filter INPECTIONDATENTIME column"
                    HeaderText="INPECTIONDATENTIME" SortExpression="INPECTIONDATENTIME" UniqueName="INPECTIONDATENTIME">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="SRS" DataType="System.Decimal" FilterControlAltText="Filter SRS column"
                    HeaderText="SRS" SortExpression="SRS" UniqueName="SRS">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="VIOLATIONTYPE" FilterControlAltText="Filter VIOLATIONTYPE column"
                    HeaderText="VIOLATIONTYPE" SortExpression="VIOLATIONTYPE" UniqueName="VIOLATIONTYPE">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="VIOLATIONDESCRIPTION" FilterControlAltText="Filter VIOLATIONDESCRIPTION column"
                    HeaderText="VIOLATIONDESCRIPTION" SortExpression="VIOLATIONDESCRIPTION" UniqueName="VIOLATIONDESCRIPTION">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="REMARKS" FilterControlAltText="Filter REMARKS column"
                    HeaderText="REMARKS" SortExpression="REMARKS" UniqueName="REMARKS">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="ITEM" FilterControlAltText="Filter ITEM column"
                    HeaderText="ITEM" SortExpression="ITEM" UniqueName="ITEM">
                </telerik:GridBoundColumn>
                <telerik:GridAttachmentColumn FileName="attachment" 
                    FilterControlAltText="Filter column column" HeaderText="audit status-" 
                    UniqueName="column">
                </telerik:GridAttachmentColumn>
                <telerik:GridTemplateColumn>
                    <ItemTemplate>
                        <telerik:RadDropDownList ID="violDrop" runat="server" DataSourceID="dd2_SqlDataSource1" DataTextField="LISTITEM" DataValueField="LISTITEM" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"  AutoPostBack="true"/>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
            <EditFormSettings>
                <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                </EditColumn>
            </EditFormSettings>
            <BatchEditingSettings EditType="Cell"></BatchEditingSettings>
            <PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
        </MasterTableView>
        <PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
        <FilterMenu EnableImageSprites="False">
        </FilterMenu>
    </telerik:RadGrid>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM &quot;MEMO&quot; WHERE (&quot;SRS&quot; = :SRS)">
        <SelectParameters>
            <asp:ControlParameter ControlID="RadGrid1" Name="SRS" PropertyName="SelectedValue"
                Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="dd2_SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT &quot;LISTITEM&quot; FROM &quot;DROPDOWNLIST&quot;">
    </asp:SqlDataSource>
</asp:Content>
4

2 回答 2

0

请尝试使用以下代码片段。让我知道是否有任何问题。

Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs)
    Dim item As GridDataItem = TryCast(TryCast(sender, DropDownList).NamingContainer, GridDataItem)
    Dim index As Integer = item.ItemIndex
    'Access current row index here
End Sub
于 2013-10-05T09:42:52.477 回答
0

首先感谢您的回复

不幸的是,您提供的代码片段不适用于我的情况,它给了我一条错误消息,指出“对象引用未设置为对象的实例”

注意:我复制并粘贴了更改索引变量名称的代码

于 2013-10-06T04:58:42.933 回答