日期:2012-05-22  浏览次数:20448 次

批量获取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;
Arr