当前位置:编程学习 > C#/ASP.NET >>

Datagrid后台动态增加行后怎么获取对应的数据

datagrid数据来源一个excel文件,采用自动生成列绑定。
采用的把excel数据读入datatable,datable在第一行前增加一空行然后绑定到datagrid
然后我想在datagrid的第一行增加一行下拉对象dropdownlist。
增加是增加上去了,但是点页面上的button到后台事件后,取不到其datagrid第一行的下拉对象的数据,查看是空的,
如果说在这里还要再构建一次下拉对象的话,其选择的值都是初始值,请问要怎么解决呢?
  this.gvExcel.ItemDataBound+=new DataGridItemEventHandler(gvExcel_ItemCreated);
               。。。。。。。。
                
                daCashFlow.Fill(dtExcel);


 void gvExcel_ItemCreated(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemIndex == 0)
        {

            for (int i = 0; i < e.Item.Cells.Count; i++)
            {
                e.Item.Cells[i].Controls.Add(CreateSelect());
            }
            
        }
   }
 private DropDownList CreateSelect()
    {
    DropDownList selects = new DropDownList();
        selects.Items.Add("批准",0)
        selects.Items.Add("否决",1)
   return selects 
}
    } --------------------编程问答-------------------- ((DropDownList)e.Item.FindControl("DDLdgService")).SelectedValue

---

selects   id 是不是没设哦?会不会是跟这有关...呵呵 --------------------编程问答-------------------- 但是点页面上的button到后台事件后,取不到其datagrid第一行的下拉对象的数据
===============
DataGrid里面的按钮不能直接点进去吧?如果想给它写代码要用CommandName。 --------------------编程问答-------------------- 对象没有id的,和id没关系
通过gvExcel.item[0].cells[0].control[0]是取不到的
DataGrid里面的按钮不能直接点进去吧?如果想给它写代码要用CommandName。
---------------------
按钮不是一行一个按钮的,
只是在顶部有几个按钮而已 --------------------编程问答-------------------- HtmlSelect
 
不知道从页面上取怎么样... --------------------编程问答-------------------- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DataGrid.aspx.cs" Inherits="DataGrid" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:DataGrid ID="dg1" runat="server" AutoGenerateColumns="true"></asp:DataGrid>
    <asp:Button ID="bt1" runat="server" Text="提交" OnClick="bt_sumbit" />
    </form>
</body>
</html>



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class DataGrid : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        BindData();
       
    }

    private void BindData()
    {
        string[] data ={"", "AA", "BB", "CC" };
        this.dg1.DataSource = data;
        this.dg1.ItemCreated += new DataGridItemEventHandler(dg1_ItemCreated);
        this.dg1.DataBind();
    }

    void dg1_ItemCreated(object sender, DataGridItemEventArgs e)
    {

        if (e.Item.ItemIndex == -1)
        {
            for (int i = 0; i < e.Item.Cells.Count; i++)
            {
                e.Item.Cells[i].Controls.Clear();
                e.Item.Cells[i].Controls.Add(GetDrop());
            }
        }

    }
    DropDownList GetDrop()
    {
        DropDownList dr = new DropDownList();
        dr.Items.Add(new ListItem("批准", "0"));
        dr.Items.Add(new ListItem("否决", "1"));
        return dr;
    }
   public  void bt_sumbit(object sender, EventArgs e)
    {
        DataGridItem item = this.dg1.Items[0];
        if (null != item)
        {
            Response.Write(item.Cells[0].Text);
        }
    }
}
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,