1

TemplateColumnの行で変更(asp:radiobuttonlist)が発生したときにDataGridの行インデックスを取得するには

<asp:DataGrid ID="dgTier2" runat="server" AutoGenerateColumns="False" Width="578px" 
     Height="83px" OnItemDataBound="dgTier2_ItemDataBound">
    <asp:BoundColumn  DataField="TypeID" HeaderText="TypeID">
    </asp:BoundColumn>
    <asp:BoundColumn  DataField="Type" HeaderText="Category Type">
    </asp:BoundColumn>
     <asp:TemplateColumn HeaderText="Manual Tracking Option" >
      <ItemStyle VerticalAlign="Bottom" />
       <itemtemplate>
        <asp:radiobuttonlist id="rdbtnManual" runat="server" on RepeatDirection="Horizontal">
        <asp:listitem id="M"  runat="server" Text="Manual" Value="1" />
        <asp:listitem id="A"  runat="server" Text="NoManual" Value="0" />
     </asp:radiobuttonlist>
     </itemtemplate>
     </asp:TemplateColumn>
     </asp:DataGrid>

rediobutton の選択を変更して、変更された行の Rowindex を取得した後、多くの行で変更が発生した場合は、Rowindexs のコレクションを作成する必要があります。

4

1 に答える 1

1

私の答え..

itemtemplate 列に OnSelectedIndexChanged プロパティを追加しました。

<asp:TemplateColumn HeaderText="Manual Tracking Option">
    <ItemStyle VerticalAlign="Bottom" />
    <itemtemplate>
    <asp:radiobuttonlist id="rdbtnManual" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ManTracChanged" RepeatDirection="Horizontal">
    <asp:listitem id="M"  runat="server" Text="Manual" Value="1" />
    <asp:listitem id="A"  runat="server" Text="No Manual" Value="0" />
    </asp:radiobuttonlist>
    </itemtemplate>
</asp:TemplateColumn>

コードビハインドで

  'for storing list of RowIndex which change occur  
  Private objListManTrack As New List(Of Integer) 

  Protected Sub ManTracChanged(ByVal sender As Object, ByVal e As EventArgs)
       Dim RowIndex As Integer = Nothing
       Dim rblist As RadioButtonList
       rblist = CType(sender, RadioButtonList)
       Dim modifiedgriditem As DataGridItem = CType(rblist.Parent.Parent, DataGridItem)
       RowIndex = modifiedgriditem.ItemIndex

        If Session("objListManTrack") Is Nothing Then
            objListManTrack.Add(RowIndex)
            Session("objListManTrack") = objListManTrack
        Else
            objListManTrack = Session("objListManTrack")
            objListManTrack.Add(RowIndex)
            Session("objListManTrack") = objListManTrack

        End If

End Sub

関数では、変更されたグリッド行のインデックスのリストを作成しています。

最後に、更新された行のリストを取得し、1 回のボタン クリック イベントで変更を DB に反映できます....

于 2012-04-21T13:25:07.853 に答える