首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

gridview模板添加checkbox,多选行, 在同一个页面,怎么用另一个gridview显示勾选的多行数据

2012-08-02 
gridview模板添加checkbox,多选行, 在同一个页面,如何用另一个gridview显示勾选的多行数据?1、gridview模板

gridview模板添加checkbox,多选行, 在同一个页面,如何用另一个gridview显示勾选的多行数据?
1、gridview模板添加checkbox,多选行, 在同一个页面,如何用另一个gridview显示勾选的多行数据,
  包含checkbox的gridview是查询结果,
2、第一个gridview代码如下:

前台:

<asp:Label ID="Label1" runat="server" Text="生产计划号:"></asp:Label>
  <asp:TextBox ID="select_1" runat="server"></asp:TextBox>
  <asp:Label ID="Label2" runat="server" Text="已转采购的材料单:"></asp:Label>  
  <asp:DropDownList ID="DropDownList1" runat="server">
  <asp:ListItem Value="NULL" Selected="True">请选择</asp:ListItem>
  <asp:ListItem Value="转采购">转采购</asp:ListItem>
  <asp:ListItem Value="无">未 转</asp:ListItem>
  </asp:DropDownList>
  <asp:Label ID="Label3" runat="server" Text="Label">是否已生成采购订单:</asp:Label>
  <asp:DropDownList ID="finish_Purchase" runat="server">
  <asp:ListItem Selected="True" Value="NULL">请选择</asp:ListItem>
  <asp:ListItem Value="已生成">已生成</asp:ListItem>
  <asp:ListItem Value="无">未 成</asp:ListItem>
  </asp:DropDownList>
   
  &nbsp;&nbsp;&nbsp;
   
  <asp:Button ID="btn_select" runat="server" Text="搜 索" 
  onclick="btn_select_Click" />
   
  <br />
  <br />
   
  <asp:GridView ID="gvp_gridview" runat="server" AutoGenerateColumns="False" 
  Font-Size="Small" Width="976px" EnableModelValidation="True">
  <Columns>
  <asp:BoundField DataField="生产计划号" HeaderText="生产计划号" />
  <asp:BoundField DataField="材料单编号" HeaderText="材料单编号" />
  <asp:BoundField DataField="材料明细序号" HeaderText="材料明细序号" />
  <asp:BoundField DataField="产品名称" HeaderText="产品名称" />
  <asp:BoundField DataField="型号规格" HeaderText="型号规格" />
  <asp:BoundField DataField="单位" HeaderText="单位" />
  <asp:BoundField DataField="数量" HeaderText="数量" />
  <asp:BoundField DataField="品牌" HeaderText="品牌" />
  <asp:BoundField DataField="备注" HeaderText="备注" />
  <asp:BoundField DataField="审核" HeaderText="审核" />
  <asp:BoundField DataField="审核说明" HeaderText="审核说明" />
  <asp:BoundField DataField="编制" HeaderText="编制" />
  <asp:BoundField DataField="编制日期" HeaderText="编制日期" />


  <asp:BoundField DataField="供应勾选结果" HeaderText="转采购" />
  <asp:BoundField DataField="采购单生成" HeaderText="采购订单状态" />
  <asp:TemplateField HeaderText="选择">
  <EditItemTemplate>
  <asp:CheckBox ID="CheckBox1" runat="server" />
  </EditItemTemplate>
  <ItemTemplate>
  <asp:CheckBox ID="CheckBox1" runat="server" />
  </ItemTemplate>
  </asp:TemplateField>
  </Columns>  
  </asp:GridView>

C#:
public void selectgetdata()
  {
  //连接SQL SERVER
  string ConnSqlServer = "Data Source=.;Initial Catalog=HGDataBase;Integrated Security=True;User ID=sa; pwd=3272371";
  SqlConnection Conn = new SqlConnection(ConnSqlServer);

  //打开数据库
  Conn.Open();


  //生产计划号
  string 生产计划号 = select_1.Text.Trim();


  //声明查询语句变量
  string 生产计划号SQL = "";
  string 转采购SQL = "";
  string 生成采购单SQL = "";
  string extractSql = ""; ;


  //如果生产计划号不为空,生成生产计划号SQL 语句
  if (生产计划号 != "")
  生产计划号SQL = " AND 生产计划号 LIKE '%" + 生产计划号 + "%'";


  //如果“转采购”不为空,生成审核SQL语句
  if (DropDownList1.SelectedValue != "NULL")
  {
  转采购SQL = " AND 供应勾选结果 = '" + DropDownList1.SelectedValue.ToString() + "'";

  }

  //如果“生成采购单”不为空,生成生成采购单SQL语句
  if (finish_Purchase.SelectedValue != "NULL")
  {
  生成采购单SQL = " AND 采购单生成 = '" + finish_Purchase.SelectedValue.ToString() + "'";

  }


  //综合查询语句 

  extractSql = "SELECT * FROM [Orders] WHERE 勾选的材料明细ID <>''" + 生产计划号SQL + 转采购SQL + 生成采购单SQL;


  //填充DataSet
  SqlDataAdapter Adapter = new SqlDataAdapter(extractSql, Conn);
  DataSet Ds = new DataSet();
  Adapter.Fill(Ds, "TT");  

  //执行命令
  gvp_gridview.DataSource = Ds.Tables["TT"];//"TT"任意起名
  gvp_gridview.DataBind();

   

  //关闭数据库
  Conn.Close();
  }

  protected void btn_select_Click(object sender, EventArgs e)
  {
  selectgetdata();
  }


[解决办法]
遍历第一个gridview获取以选中的行数据,赋值给第二个gridview就好了啊。
[解决办法]
利用for循环 
 for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
CheckBox c = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("cb");
if (this.CheckBox1.Checked ==true)
{
c.Checked = true;
}
else
{
c.Checked = false;
}
z这个是全选与全不选的问题。。。。借鉴下。。。
------解决方案--------------------


for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
CheckBox cb = (CheckBox)gvLawName.Rows[i].FindControl("CheckBox");
if (this.cb.Checked ==true)
{
string id= gvLaw.Rows[i].Cells[1].Text.ToString();
//根据id,在你绑定的dataset或datatable里面找到这个行的数据
}
else
{

}

[解决办法]
楼主说的你可以这样实现!数据库中加一个字段:state 当第一个gridview中勾选时就让哪行的state变为true(当然默认都为false),不勾选的还是false!另一个gridview查询时,只查询state字段为true的不就行了吗!

C# code
 for (int i = 0; i < this.GridView1.Rows.Count; i++)  {  CheckBox c = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("cb");  if (this.CheckBox1.Checked ==true)  {   //state为true;代码自己实现!   }  else  {   //state 为false;  代码自己实现!  } 

热点排行