2014-09-30 66 views
0

我试图通过表循环来查看是否选中了复选框。在按钮上单击SendCheckEmail被调用。我得到一个错误EmailForm没有声明,我也不确定如何循环遍历表来处理每个选中的复选框。如何通过表循环查看复选框是否被选中

Sub Page_Load 
    If Request.QueryString("show") <> "" then 
     dim Sr as StreamReader = New StreamReader("d:\netdrvs\prs\emaillist\" & Request.QueryString("show"),FileMode.Open) 
     output="<table id=EmailForm border=1 padding=4 >" & VBCR 
     output+="<tr><td>Customer Code</td><td>Email</td><td>Invoice Number</td><td>Regarding</td><td> <input type=checkbox name=chkHeader id=chkHeader></td></tr>" 
     While Not SR.EndOfStream 
     dim Temp(3) as String 
     Temp = Split(SR.ReadLine(),vbTab) 
     dim temp2(3) as String 
     Temp2 = Split(Temp(0),"_") 
     output += "<tr>" & VBCR 
     output += "<td>" & Temp2(1) & "</td>" & VBCR 
     output += "<td>" & Temp(1) & "</td>" & VBCR 
     output += "<td>" & Temp2(0) & "</td>" & VBCR 
     output += "<td>" & Temp(2) & "</td>" & VBCR 
     output += "<td> <input type=checkbox name=chkRow id=chkRow> </td>" & VBCR 
     output += "</tr>"& VBCR 
    End While 
    output+="</table>" & VBCR 
    SR.Close() 
    ProcessChk.Visible = True 
    end if 
End Sub 

Sub SendCheckEmail (sender As Object, e As System.EventArgs) 

    Dim item 

    For each item in EmailForm 
     'loop through each row 
    NEXT 

End Sub 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Lathams Invoice Email Sending</title> 
<script type="text/javascript" src="ajax.googleapis.js"></script> 
<script type="text/javascript"> 
    $("[id*=chkHeader]").live("click", function() { 
    var chkHeader = $(this); 
    var grid = $(this).closest("table"); 
    $("input[type=checkbox]", grid).each(function() { 
     if (chkHeader.is(":checked")) { 
      $(this).attr("checked", "checked"); 
      $("td", $(this).closest("tr")).addClass("selected"); 
     } else { 
      $(this).removeAttr("checked"); 
      $("td", $(this).closest("tr")).removeClass("selected"); 
     } 
    }); 
}); 
$("[id*=chkRow]").live("click", function() { 
    var grid = $(this).closest("table"); 
    var chkHeader = $("[id*=chkHeader]", grid); 
    if (!$(this).is(":checked")) { 
     $("td", $(this).closest("tr")).removeClass("selected"); 
     chkHeader.removeAttr("checked"); 
    } else { 
     $("td", $(this).closest("tr")).addClass("selected"); 
     if ($("[id*=chkRow]", grid).length == $("[id*=chkRow]:checked", grid).length) { 
      chkHeader.attr("checked", "checked"); 
     } 
    } 
}); 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:label id="test" runat="server" /> 

    <%=output%> 



    <p>&nbsp;</p> 
    <asp:Button id="ProcessFile" visible="false" runat="server" Text="Process Emails" onClick="SendMails" /> 
    <asp:Button id="ProcessChk" visible="false" runat="server" Text="Process Checked Emails" OnClick="SendCheckEmail" /> 

</form> 
</body> 
</html> 
+0

显示你的.aspx页面中 – 2014-09-30 19:15:34

+0

好吧!我已经重新编辑我的问题 – Sash 2014-09-30 19:21:14

+0

EmailForm是哪个控件?你是否使用任何'Repeater',GridView' – 2014-09-30 19:25:54

回答

0

设置runat="server"EmailForm

然后

& VBCR

然后,你将收到一个逗号通过访问请求分开的电子邮件地址列表” IN C#

foreach (var item in tbl.Rows) 
     { 
      HtmlTableRow row = (HtmlTableRow)item; 

      foreach (var item1 in row.Controls) 
      { 
       HtmlTableCell cell = (HtmlTableCell)item1; 



      } 
     } 

在VB.NET

Dim rowitem 
Dim cellitem 

For Each rowitem In tbl.Rows 
HtmlTableRow row = (HtmlTableRow)rowitem; 


For Each cellitem In tbl.Rows 
HtmlTableCell cell = (HtmlTableCell)cellitem; 
// cell items 

next 

next 


// can directly access checkbox if it is set to runat='server' 
1

EmailForm不是一个服务器控件,所以你不能在CodeBehind中访问它。

您可以尝试使用您绑定到文件内容的中继器或表格控件。

否则,您可以在输入标记中添加电子邮件地址作为值属性。 输出+ = “”(chkRow “)

+0

会runat =“server”的工作吗? – Sash 2014-09-30 19:14:39

+0

仅当您在aspx文件中定义runat = server时。不是如果你通过输出变量添加它。我认为你应该走这条路:http://www.aspdotnet-suresh.com/2010/12/v-behaviorurldefaultvmlo_21.html – schudel 2014-10-01 06:05:16