【问题标题】:How can I get a listview hiddenfield and use it in codebehind oncheckedchanged function如何获取列表视图隐藏字段并在代码隐藏 oncheckedchanged 函数中使用它
【发布时间】:2011-09-15 00:58:31
【问题描述】:
<asp:ListView ID="TasksList" runat="server" DataKeyNames="AnnualProgramTasksId"
 DataSourceID="TasksListSqlDataSource">    
...
<LayoutTemplate>...</LayoutTemplate>
...
 <ItemTemplate>
      <tr>
         <td>
             <asp:HiddenField ID="AnnualProgramTasksId" runat="server" Value='<%#Bind("AnnualProgramTasksId")%>'/>
             <asp:Checkbox ID="CompletedCheckbox" runat="server" AutoPostBack="True" OnCheckedChanged="CompletedCheckboxChange" Checked='<%#IIf(Eval("TaskCompleted"), "True", "False")%>' />
         </td>
         <td><%#Eval("TaskDesc")%></td>
         <td></td>
      </tr>  
 </ItemTemplate>
...
 <asp:sqldatasource ID="TasklistSqlDataSource...
SelectCommand="Select AnnualProgramTasksId, TaskDesc, TaskCompleted FROM AnnualPreogramTasks"
</asp:sqldatasource>

...

代码背后:

Protected Sub CompletedCheckboxChange( ByVal sender As Object, ByVal e As EventArgs )
     Dim Completed As CheckBox = TryCast( sender, CheckBox )

     response.write( Completed.Checked ) ' This works. I'll use this to determine what to enter in the database for the 'Checked' column
     ' **How can i get the value of AnnualProgramTasksId?**  
     ' (I'll use this to construct a sql statement to update the appropriate database row.

End Sub

【问题讨论】:

    标签: asp.net vb.net listview checkbox


    【解决方案1】:
    Dim AnnualProgramTasksId as HiddenField = TryCast(Completed.Parent.FindControl("AnnualProgramTasksId"), HiddenField)
    

    【讨论】:

    • 完美,谢谢!只需要使用 AnnualProgramTasksId.Value 来获取我想在 sql 中使用的实际值。
    【解决方案2】:

    也许这样的东西会起作用,但还没有测试过

    Dim AnnualProgramTasksId As New List(Of Integer)
            For Each task As ListViewItem In Me.TasksList.Items
                Dim CompletedCheckboxs As CheckBox = DirectCast(task.FindControl("CompletedCheckbox"), CheckBox)
                If CompletedCheckboxs IsNot Nothing Then
                    If CompletedCheckboxs.Checked Then
                        Dim HiddenProductID As HiddenField = DirectCast(task .FindControl("AnnualProgramTasksId"), HiddenField)
                        Dim ID As String = CInt(HiddenProductID.Value.ToString)
                    End If
            Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2019-12-10
      • 1970-01-01
      相关资源
      最近更新 更多