科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道批量获取DataGrid控件模板列中的数据

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

     在DataGrid中一般只能单个获取每一行的数据,若要批量获取DataGrid控件中的数据必须对每一个模板列的控件进行扫描,获取其中的数据。      我本想做的程序是根据不同的行数,由用户一次输入若干数据。

作者:中国IT实验室 来源:中国IT实验室 2007年9月29日

关键字: 编程

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章