访问下拉列表selectedindexchanged事件中的datagrid控件

时间:2013-02-15 15:10:37

标签: vb.net datagrid selectedindexchanged

HTML CODE:

<cc1:SPASDataGrid ID="dgPayments" runat="server" AutoGenerateColumns="false" ShowFooter="true" Ajaxify="true">
    <EditItemStyle VerticalAlign="Top"></EditItemStyle>
    <FooterStyle VerticalAlign="Top"></FooterStyle>
    <Columns>
          <asp:TemplateColumn HeaderText="Pay To">
            <FooterTemplate>
                <table id="Table3" runat="server">
                                               <tr>
                    <td>
                                                      <uc1:AnyDropDown ID="ddRolloverSource" runat="server" TableName="system_code" DisplayFieldName="description" CodeFieldName="code_value" WhereClause="PAYROLL_REQUEST" OnSelectedIndexChanged="ddRolloverSource_SelectedIndexChanged" AutoPostBack="true"></uc1:AnyDropDown>
                                                  </td>
                     </tr>
                                        </table>
            </FooterTemplate>
                              <ItemTemplate></ItemTemplate>
                              <EditItemTemplate></EditItemTemplate>
             </asp:TemplateColumn>
             <asp:TemplateColumn HeaderText="Post Tax Amount">
            <FooterTemplate>
                                      <table>
                <tr>
                   <td>
                    <cc1:SPASRadioButton Checked="true" Text="All" ID="rbPostTaxAll" GroupName="rbPostTaxAllOrRemaining" TabIndex="40" runat="server" CssClass="CheckBoxList"></cc1:SPASRadioButton>
                                           </td>
                   <td >
                    <cc1:SPASDropDownList ID="ddlPostTaxAmountOrPercentageF"  TabIndex="80" runat="server">
                    <asp:ListItem Selected="true" Value="Amount">Amount</asp:ListItem>
                    </cc1:SPASDropDownList>
                                           </td>                                        </tr>
                  </table>
            </FooterTemplate>
                              <ItemTemplate></ItemTemplate>                                    <EditItemTemplate></EditItemTemplate>                                                            
</Columns>
</cc1:SPASDataGrid>

代码隐藏:

Protected Sub ddRolloverSource_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
'Disable the rbPostTaxAll and ddlPostTaxAmountOrPercentageF controls
 End Sub

我正在尝试访问位于Datagrid中的下拉列表的selectedIndexChanged事件内的Datagrid中的控件。

2 个答案:

答案 0 :(得分:1)

如果您使用的是普通的GridView,那么就是这样做的。 您只需要在每一行中找到该控件然后就可以禁用它

Protected Sub ddRolloverSource_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    For Each myDR As GridViewRow In GridView1.Rows
      If myDR.RowType=GridViewRowType.DataRow Then
        Dim FoundRadioButton As RadioButton = DirectCast(myDR.FindControl("rbPostTaxAll"), RadioButton)
        Dim FoundDropDownList As DropDownList = DirectCast(myDR.FindControl("ddlPostTaxAmountOrPercentageF"), DropDownList)
        FoundRadioButton.Enabled = False
        FoundDropDownList.Enabled = False
      End If  
    Next
End Sub

编辑添加了比尔的建议

EDIT为DataGrid添加了解决方案

对于DataGrid,请使用此

Protected Sub ddRolloverSource_SelectedIndexChanged(sender As Object, e As EventArgs)

    Dim RowCount As Integer = DataGrid1.Items.Count - 1
    For i As Integer = 0 To RowCount - 1
        Dim RowItem As DataGridItem = DataGrid1.Items(RowCount)
        Dim FoundRadioButton As RadioButton = DirectCast(RowItem.FindControl("rbPostTaxAll"), RadioButton)
        Dim FoundDropDownList As DropDownList = DirectCast(RowItem.FindControl("ddlPostTaxAmountOrPercentageF"), DropDownList)

        FoundRadioButton.Enabled = False
        FoundDropDownList.Enabled = False
    Next
End Sub

答案 1 :(得分:0)

终于找到了解决方案。

Protected Sub ddRolloverSource_SelectedIndexChanged(sender As Object, e As EventArgs)
        Dim tbl As Table = DirectCast(dgPayments.Controls(0), Table)
        Dim footer As DataGridItem = DirectCast(tbl.Controls(tbl.Controls.Count - 1), DataGridItem)
        Dim rbPostTaxAll As RadioButton = DirectCast(footer.FindControl("rbPostTaxAll"), RadioButton )
        Dim rbPostTaxRemaining As DropDownList = DirectCast(footer.FindControl("rbPostTaxRemaining"), DropDownList )

        rbPostTaxAll .Enabled = False
        rbPostTaxRemaining .Enabled = False       
End Sub