你是寫在哪個事件里面的?試試看
string ordno=((Label)e.Item.FindControl("lb")).Text;

解决方案 »

  1.   

    这样是取不到的,而且我不止取一个值,我要取整列的值。关键是,在编辑状态下事取不到FindControl("lb")的。这样做是不可能的。不知道除了FindControl还有什么方法呢?
      

  2.   

    点编辑的时候将lb的text先保存到一个变量中
      

  3.   

    在DataGrid的UpdateCommand事件中可以取到模板中的label的數值
    在EditCommand事件下可能取不到
      

  4.   

    是在UpdateCommand下取的,还是取不到的,因为在编辑状态下点确定的时候引发UpdateCommand事件,所以还是取不到。不知道还有什么办法啊?救命啊!!!!
      

  5.   

    這是我以前寫的一段修改數據的代碼,希望對你有幫助:
    ===================================================================
    aspx中(DataGrid的修改列)﹕
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="確定" HeaderText="編輯" CancelText="取消" EditText="編輯">
    </asp:EditCommandColumn>
    ===================================================================
    aspx.cs中:
    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
        DataGrid1.EditItemIndex=e.Item.ItemIndex;
                           DataBind();
                       }private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
       string ordno=((TextBox)e.Item.FindControl("ddhm")).Text;
       string supno=((TextBox)e.Item.FindControl("Textbox9")).Text;
       string orddate=((TextBox)e.Item.FindControl("Textbox10")).Text;
       string delsta=((TextBox)e.Item.FindControl("Textbox11")).Text;
       string delend=((TextBox)e.Item.FindControl("Textbox12")).Text;
       string curno=((TextBox)e.Item.FindControl("Textbox13")).Text;
       string paymode=((TextBox)e.Item.FindControl("Textbox14")).Text;
      
    conn.comm("update TableManager set dbName='"+ordno+"',tbName='"+supno+"',useSystem='"+orddate+"',author='"+delsta+"',[rows]='"+delend+"',[date]='"+Session["udate"]+"',memo='"+paymode+"' where rowguid='"+Session["bb"]+"'");
    DataGrid1.EditItemIndex=-1;
    conn.Gridbind("select * from TableManager",DataGrid1);
     }
    ======================================================================
    conn.comm()和comm.Gridbind()為我自己寫的方法。
    在DataGrid的屬性事件中UpdateCommand=DataGrid1_UpdateCommand
      

  6.   

    To zjjszw(阿丸) 
    我用的是摸板列!!!!!!!
    你说的似乎是取得编辑的那一行的输入值,而我想要的是摸板列的所有行的值,除了正在编辑的这一行。
      

  7.   

    难道此问题真的无解决问题的方法吗?help ...
      

  8.   

    >>>然后去跟别的行中的Label 的值进行比较。但是问题就出现了,因为是在编辑状态下,所以无法用are you sure?? try
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <script language="C#" runat="server">    protected void Page_Load(Object Src, EventArgs E)
        {
            if (!IsPostBack)
                BindGrid();
        }    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
        {
            MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
            BindGrid();
            
        }    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
        {

            MyDataGrid.EditItemIndex = -1;
            BindGrid();
        }    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
        {
    TextBox tb =  (TextBox)e.Item.FindControl("TextBox1"); Response.Write("****in Update:" + tb.Text + "****"); foreach (DataGridItem dgi in MyDataGrid.Items)
    {
    if (e.Item != dgi)
    {
    Label l = (Label)dgi.FindControl("Label1");
    Response.Write("****other columns:" + l.Text + "****");
    }
    }        MyDataGrid.EditItemIndex = -1;
            BindGrid();
        }
            
        public void BindGrid()
        {
            SqlDataAdapter da = new SqlDataAdapter("select * from authors", "server=(local);database=pubs;uid=sa;pwd=;");        DataTable dt = new DataTable();
            da.Fill(dt);        MyDataGrid.DataSource=dt.DefaultView;
            MyDataGrid.DataBind();

        }</script>
    <body>
      <form runat="server">    <ASP:DataGrid id="MyDataGrid" runat="server"
          OnEditCommand="MyDataGrid_Edit"
          OnCancelCommand="MyDataGrid_Cancel"
          OnUpdateCommand="MyDataGrid_Update"
          DataKeyField="au_id">      <Columns>
            <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/> <ASP:TEMPLATECOLUMN headertext="Unit">
          <ITEMTEMPLATE>
           <asp:Label id="Label1" runat="server"
    Text='<%#DataBinder.Eval(Container.DataItem, "au_lname") %>'>
           </ASP:LABEL>
          </ITEMTEMPLATE>
          <EDITITEMTEMPLATE>
           <asp:TextBox id="TextBox1" runat="server" Text='<%#
    DataBinder.Eval(Container.DataItem, "au_lname") %>'>
           </ASP:TEXTBOX>
           <ASP:REQUIREDFIELDVALIDATOR id="RequiredFieldValidator1"
    runat="server" controltovalidate="TextBox1"
    errormessage="Required*****"></ASP:REQUIREDFIELDVALIDATOR><asp:DropdownList ID="progress" runat="server" Width="40">
    <asp:ListItem Value="80">80</asp:ListItem>
    <asp:ListItem Value="90">90</asp:ListItem>
    <asp:ListItem Value="100">100</asp:ListItem>
    </asp:DropdownList>
          </EDITITEMTEMPLATE>
         </ASP:TEMPLATECOLUMN>
         </Columns>
        </ASP:DataGrid>
      </form>
    </body>
      

  9.   

    >>>然后去跟别的行中的Label 的值进行比较。但是问题就出现了,因为是在编辑状态下,所以无法用are you sure?? try
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <script language="C#" runat="server">    protected void Page_Load(Object Src, EventArgs E)
        {
            if (!IsPostBack)
                BindGrid();
        }    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
        {
            MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
            BindGrid();
            
        }    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
        {

            MyDataGrid.EditItemIndex = -1;
            BindGrid();
        }    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
        {
    TextBox tb =  (TextBox)e.Item.FindControl("TextBox1"); Response.Write("****in Update:" + tb.Text + "****"); foreach (DataGridItem dgi in MyDataGrid.Items)
    {
    if (e.Item != dgi)
    {
    Label l = (Label)dgi.FindControl("Label1");
    Response.Write("****other columns:" + l.Text + "****");
    }
    }        MyDataGrid.EditItemIndex = -1;
            BindGrid();
        }
            
        public void BindGrid()
        {
            SqlDataAdapter da = new SqlDataAdapter("select * from authors", "server=(local);database=pubs;uid=sa;pwd=;");        DataTable dt = new DataTable();
            da.Fill(dt);        MyDataGrid.DataSource=dt.DefaultView;
            MyDataGrid.DataBind();

        }</script>
    <body>
      <form runat="server">    <ASP:DataGrid id="MyDataGrid" runat="server"
          OnEditCommand="MyDataGrid_Edit"
          OnCancelCommand="MyDataGrid_Cancel"
          OnUpdateCommand="MyDataGrid_Update"
          DataKeyField="au_id">      <Columns>
            <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/> <ASP:TEMPLATECOLUMN headertext="Unit">
          <ITEMTEMPLATE>
           <asp:Label id="Label1" runat="server"
    Text='<%#DataBinder.Eval(Container.DataItem, "au_lname") %>'>
           </ASP:LABEL>
          </ITEMTEMPLATE>
          <EDITITEMTEMPLATE>
           <asp:TextBox id="TextBox1" runat="server" Text='<%#
    DataBinder.Eval(Container.DataItem, "au_lname") %>'>
           </ASP:TEXTBOX>
           <ASP:REQUIREDFIELDVALIDATOR id="RequiredFieldValidator1"
    runat="server" controltovalidate="TextBox1"
    errormessage="Required*****"></ASP:REQUIREDFIELDVALIDATOR><asp:DropdownList ID="progress" runat="server" Width="40">
    <asp:ListItem Value="80">80</asp:ListItem>
    <asp:ListItem Value="90">90</asp:ListItem>
    <asp:ListItem Value="100">100</asp:ListItem>
    </asp:DropdownList>
          </EDITITEMTEMPLATE>
         </ASP:TEMPLATECOLUMN>
         </Columns>
        </ASP:DataGrid>
      </form>
    </body>
      

  10.   

    我能问你的<asp:DropdownList ID="progress" runat="server" Width="40">中的progress在修改的时候是怎么和数据库中的内容进行绑定的吗?并且,怎样使DropdownList选中progress内容所在项!急!正好要用到!
    http://expert.csdn.net/Expert/topic/2227/2227242.xml?temp=.1263239
      

  11.   

    上面的文章位置给错了!
    http://expert.csdn.net/Expert/topic/2227/2227242.xml?temp=.1263239