批量获取DataGrid控件模板列中的数据

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

在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控件,扫描所有的子控件就可以实现对数据的批量快速删除、修改等操作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有