批量获取DataGrid控件模板列中的数据 在DataGrid中一般只能单个获取每一行的数据,若要批量获取DataGrid控件中的数据必须对每一个模板列的控件进行扫描,获取其中的数据。 我本想做的程序是根据不同的行数,由用户一次输入若干数据,提交后系统自动获取批量数据的程序。 以下程序简单表达了需要实现的功能 test.aspx .......... <asp:DataGrid id="dgResult" runat="server" BorderColor="#DEBA84" BorderStyle="None" CellSpacing="2" BorderWidth="1px" BackColor="#DEBA84" CellPadding="3" AutoGenerateColumns="False"> <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle> <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#738A9C"></SelectedItemStyle> <ItemStyle ForeColor="#8C4510" BackColor="#FFF7E7"></ItemStyle> <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#A55129"></HeaderStyle> <Columns> <asp:BoundColumn DataField="id" HeaderText="列号"></asp:BoundColumn> <asp:TemplateColumn HeaderText="列名"> <ItemTemplate> <asp:TextBox Runat="server" Enabled="True" Width="50" ID="col"></asp:TextBox> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="整数精度"> <ItemTemplate> <asp:TextBox Runat="server" Enabled="True" ID="Textbox1" Width="50">20</asp:TextBox> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="小数点精度"> <ItemTemplate> <asp:TextBox Runat="server" Enabled="True" ID="Textbox2" Width="50">10</asp:TextBox> </ItemTemplate> </asp:TemplateColumn> </Columns> <PagerStyle HorizontalAlign="Center" ForeColor="#8C4510" Mode="NumericPages"></PagerStyle> </asp:DataGrid> <asp:Button id="btnOK" runat="server" Text="提交"></asp:Button> ...... test.aspx.cs private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!IsPostBack) mfbind(DataSource()); }
private IList DataSource() { DataTable dt=new DataTable(); DataColumn dc=new DataColumn(); dc.ColumnName="id"; dc.DataType=System.Type.GetType("System.Int32"); dc.ReadOnly=true; dc.Unique=true; dc.AutoIncrement=true; dc.AutoIncrementSeed=0; dc.AutoIncrementStep=1; dt.Columns.Add(dc); dc=new DataColumn(); dc.ColumnName="列名称"; dc.DataType=System.Type.GetType("System.String"); dt.Columns.Add(dc); for(int i=0;i<10;i++) { DataRow dr=dt.NewRow(); dr[1]=i; dt.Rows.Add(dr); } Session["Source"] = dt; return dt.DefaultView; } private void mfbind(IList dv) { this.dgResult.DataSource=(DataView)dv; this.dgResult.DataBind(); } private void btnOK_Click(object sender, System.EventArgs e) { //string tmpa=dgResult__ctl2_col1.Text; TextBox txt; ArrayList mArr=new ArrayList(); for(int i=0;i<10;i++) { txt=new TextBox(); txt=(TextBox)dgResult.Items[i].FindControl("col"); mArr.Add(txt.Text); } for(int i=0;i<mArr.Count;i++) this.lblProblem.Text+=mArr[i].ToString()+" ; "; }
其实这样的程序有共通性,通过DataGrid控件可以对数据进行批量处理,特别是对删除数据等操作的过程中使用起来及其方便快捷,只要将程序的模板列中的TextBox控件改为CheckBox控件或者DropDownList控件,扫描所有的子控件就可以实现对数据的批量快速删除、修改等操作。 
|