如何获取listview隐藏字段并在oncheckedchanged函数后面的代码中使用它

时间:2011-06-14 20:36:29

标签: asp.net vb.net listview checkbox

<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

2 个答案:

答案 0 :(得分:2)

Dim AnnualProgramTasksId as HiddenField = TryCast(Completed.Parent.FindControl("AnnualProgramTasksId"), HiddenField)

答案 1 :(得分:0)

也许像这样的东西会起作用,虽然没有测试过它

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