gridview和CheckBox结合实现多选,并用用table显示出来。

主要是实现用checkbox选择,

用gridview显示出来后,我选择几个checkbox后点击申请在后台出现如下界面,

我上面点了两个,后面就用Table显示出两条记录。

1.首先在Gridview中添加个复选框。

添加复选框代码
<Columns>
<asp:TemplateField >
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="CheckBoxALL" runat="server" AutoPostBack="True" oncheckedchanged="HeaderCheckBoxALL_CheckedChanged" />
</HeaderTemplate>
<HeaderStyle Font-Size="9pt" Width="20px" />
</asp:TemplateField>

后台增加复选框的选择功能 双击申请的那个按钮后。

 protected void btsq_Click(object sender, EventArgs e)
{

  //用IList存储选择了哪个复选框。
IList<string> zcbmList = new List<string>();
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)(GridView1.Rows[i].FindControl("CheckBox1"));
if (cbox.Checked == true)
{
                //用循环查出来哪个复选框选中,并把这个行的第二列的值存到IList中。我这里第二列是唯一标示列        
zcbmList.Add(GridView1.Rows[i].Cells[2].Text);


}

}

         //用Session传递值。
Session["zcbmList"] = zcbmList;
Response.Redirect("shenqing.aspx");
return;
}

选择事件加完后,就到shenqing.aspx界面去接受Session

public partial class shenqing : ModulePage
{
IList<string> zcbmList = null;
protected void Page_Load(object sender, EventArgs e)
{
//接受前面界面传递过来的SESSION值
zcbmList = Session["zcbmList"] as List<string>;
if (!IsPostBack)
{
string sql1 = "select 资产编码, 设备编码,设备名称,规格型号,自编号,投产日期,生产厂家,资产原值,帐面价值,备注,使用情况 from 设备基础数据表 where ";
        //用foreach语句和拼接功能实现对复选框选择传递过来的值进行遍历。
foreach (var zcbm in zcbmList)
{
if (zcbmList.IndexOf(zcbm) < zcbmList.Count - 1)
{
sql1 += "资产编码='" + zcbm + "' or ";
}
else
{
sql1 += "资产编码='" + zcbm + "'";
}

}

DataTable table = OracleHelper.ExecuteDataset(base.Conn, CommandType.Text, sql1).Tables[0];
        //把table存储上,要不你没回刷新页面后这个Table就会为空,出现错误。在前台在绑定。
ViewState["table"] = table;

}
}

后台基本上就如上面所示了。接下来就要遍历一下前台。遍历<tr>。 <asp:textbox>要改成<input type="text">

 <% foreach (System.Data.DataRow row in ((System.Data.DataTable)ViewState["table"]).Rows)
{ %>
<tr>
<td class="style65">
<input type="text" ID="tbzcbm " class="SmallInput" ReadOnly ="true" Width="118px" value="<%= row["资产编码"] %>" />
</td>
<td class="style13">
<input type="text" ID="tbzcmc" class="SmallInput" ReadOnly ="true" value ="<%=row["设备名称"] %>"></input>
</td>
<td class="style41">
<input type="text" ID="tbzcxh" class="SmallInput" ReadOnly ="true" value ="<%=row["规格型号"] %>"></input>
</td>
<td class="style42">
<input type="text" ID="tbzbh" class="SmallInput" ReadOnly ="true" value ="<%=row["自编号"] %>"></input>
</td>
<td class="style16">
<input type="text" ID="tbtcrq" class="SmallInput" ReadOnly ="true" value="<%=row["投产日期"] %>"></input>
</td>
<td class="style43">
<input type="text" ID="tbsccj" class="SmallInput" ReadOnly ="true" value ="<%=row["生产厂家"] %>"></input>
</td>
<td class="style44">
<input type="text" ID="tbyz" class="SmallInput" ReadOnly ="true" value ="<%=row["资产原值"] %>"></input>
</td>
<td class="style19">
<input type="text" ID="tbzmjz" class="SmallInput" ReadOnly ="true" value ="<%=row["帐面价值"] %>"></input>
</td>
<td class="style74">
<input type="text" ID="tbbz" class="SmallInput" ReadOnly ="true" value="<%=row["备注"] %>"></input>
</td>
</tr>
<%}%>


这样就实现了不用Gridview 用table来动态生成表单。

要是不理解大家可以加QQ59984296.

posted on 2011-12-08 13:51  小东北  阅读(2974)  评论(0编辑  收藏  举报