机能需求:对数据列表的数据进行拆分合并操作。
拆分:根据用户选择的girdview中的一条或多条数据,动态生成相应个gridview,每个gridview中显示n条改数据(原gridview中有一数量列,n表示其值);
合并:根据用户选择的动态生成的多个gridview中的数据,合并成一条数据(只数量合并),然后替换原gridview中的选择数据。
好久没玩GridView了,发觉不怎么有感情了。。。
先留下个记号,回头再来总结!
上代码:
前台
后台 动态生成GridView,并添负数据
动态插入CheckBox完事,走人。
拆分:根据用户选择的girdview中的一条或多条数据,动态生成相应个gridview,每个gridview中显示n条改数据(原gridview中有一数量列,n表示其值);
合并:根据用户选择的动态生成的多个gridview中的数据,合并成一条数据(只数量合并),然后替换原gridview中的选择数据。
好久没玩GridView了,发觉不怎么有感情了。。。
先留下个记号,回头再来总结!
上代码:
前台
- <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="total" OnRowCreated="GridView1_RowCreated"
- >
- <Columns>
- <asp:TemplateField>
- <ItemTemplate>
- <asp:CheckBox ID="CheckBox1" runat="server" />
- </ItemTemplate>
- </asp:TemplateField>
- <asp:BoundField DataField="inqmxid" HeaderText="inqmxid" ReadOnly="True" SortExpression="inqmxid" />
- <asp:BoundField DataField="fname" HeaderText="fname" SortExpression="fname" />
- <asp:BoundField DataField="unit" HeaderText="unit" SortExpression="unit" />
- <asp:BoundField DataField="qty" HeaderText="qty" SortExpression="qty" />
- <asp:BoundField DataField="total" HeaderText="total" SortExpression="total" />
- <asp:BoundField DataField="maker" HeaderText="maker" SortExpression="maker" />
- <asp:BoundField DataField="makedate" HeaderText="makedate" SortExpression="makedate" />
- </Columns>
- </asp:GridView>
- <asp:Panel ID="Panel1" runat="server" Height="455px" Width="654px" BorderColor="Silver" BorderStyle="Solid" ScrollBars="Vertical">
- </asp:Panel>
- Panel1.Controls.Clear();
- for (int i = 0; i < GridView1.Rows.Count; i++)
- {
- CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
- if (cbox.Checked)
- {
- int con = Convert.ToInt32(GridView1.DataKeys[i].Value);
- if (con > 0)
- {
- DataTable dt2=dt.Clone();
- for (int j = 0; j < con; j++)
- {
- dt2.Rows.Add(dt.Rows[i].ItemArray);
- dt2.Rows[j]["total"] = "1";
- }
- GridView grv = new GridView();
- grv.Width = Unit.Pixel(500);
- grv.RowCreated+=new GridViewRowEventHandler(grv_RowCreated);
- Panel1.Controls.Add(grv);
- grv.DataSource = dt2;
- grv.DataBind();
- }
- }
- }
动态插入CheckBox
- protected void grv_RowCreated(object sender, GridViewRowEventArgs e)
- {
- GridViewRow row = e.Row;
- if (row.RowType == DataControlRowType.Header)
- {
- TableCell cell = new TableCell();
- cell.Wrap = Wrap;
- cell.Width = Unit.Pixel(50);
- cell.Text = "<label>选择</label>";
- row.Cells.AddAt(0, cell);
- }
- else if (row.RowType == DataControlRowType.DataRow)
- {
- TableCell cell = new TableCell();
- cell.Wrap = Wrap;
- CheckBox cb = new CheckBox();
- cell.Width = Unit.Pixel(50);
- cb.ID = "ItemCheckBox";
- cell.Controls.Add(cb);
- row.Cells.AddAt(0, cell);
- }
- }