我在模板列中已经绑定了字段,如下所示:
<asp:TemplateField HeaderText="发货单号">
   <ItemTemplate>
    <a onclick="GetProductlist();"><%#  DataBinder.Eval(Container.DataItem,"DONo")  %></a>                                            
   </ItemTemplate>
</asp:TemplateField>但由于模板列没有DataField属性,所以,当我编辑时,该列不能和指定的列进行绑定。造成我传递列属性时根本没有办法传过去。想问问高手们如何处理这个问题,有没有比较简单的设置方法? 

解决方案 »

  1.   

    怎么没有??? <asp:templatefield headertext="Last Name"
                itemstyle-verticalalign="Top">
                
                <itemtemplate>
                  <%#Eval("au_lname")%>
                </itemtemplate>
                
                <edititemtemplate>
                  <asp:textbox id="LastNameTextBox"
                    text='<%#Eval("au_lname")%>'
                    width="90"
                    runat="server"/>
                  <br/>
                  <asp:requiredfieldvalidator id="LastNameRequiredValidator"
                    controltovalidate="LastNameTextBox"
                    display="Dynamic"
                    text="Please enter a last name." 
                    runat="server" />                                      
                </edititemtemplate>
                
              </asp:templatefield>
      

  2.   

    <asp:TemplateField HeaderText="发货单号"> 
      <ItemTemplate> 
        <a onclick="javascript:window.open('A.aspx?DONO=<%#  DataBinder.Eval(Container.DataItem,"DONo")  %>');"> <%#  DataBinder.Eval(Container.DataItem,"DONo")  %> </a>                                            
      </ItemTemplate> 
    </asp:TemplateField> 
      

  3.   

    模板列中 是用 <%#  Eval("")%> 来绑定
    要传值的地方 引用<%#  Eval("")%> 这个就可以
      

  4.   

    上面两位朋友没听明白我的意思。在显示的时候当然是没有问题的,但我点击了EDIT之后,模板列中控件的值传不过来。非常抱歉我的用的是下面的dropdownlist模板列,如下:<asp:TemplateField HeaderText="运输商">
                                            <EditItemTemplate>
                                                <asp:DropDownList ID="dpManifest" runat="server" DataTextField="Name" DataValueField="Code" DataSource="<%# ManifestDataSource %>">
                                                </asp:DropDownList>
                                            </EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label ID="lblManifest" runat="server" Text='<%# GetNameFromCode("Manifest",DataBinder.Eval(Container.DataItem,"ManifestCode").ToString()) %>'> </asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>结果我在Edit时候,这里面的值根本不能取出来。而其它所有BindColumn都没有问题,我查了一下,BindColumn都有DataField与之对应,系统可以知道现在GRID中编辑的是哪个字段。但模板列怎么处理呢?
      

  5.   

    <asp:templatefield headertext="Sub-Pod">
    <itemtemplate>
    <asp:label id="lblSubPod" runat="server" text='<%# Eval("SubPodName") %>' />
    </itemtemplate>
    <edititemtemplate>
    <asp:dropdownlist id="ddlSubPod" runat="server" appenddatabounditems="true" datatextfield="SubPodName"
    datavaluefield="SubPodID" selectedvalue='<%# Bind("SubPodID" %>' style="width: 130px;
    font-size: 7pt;" />
    </edititemtemplate>
    </asp:templatefield>
      

  6.   

    private void dgExtractRoles_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 

     string sql="select port form tb_port";
     SqlDataAdapter sda= new SqlDataAdapter(sql,conn);
     DataSet  myds = new DataSet();
     sda.Fill(myds,"Rus_Port");
     int c = myds.Tables["Rus_Port"].Rows.Count; if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

    DropDownList ddlport = (DropDownList)e.Item.FindControl("ddl_port"); 
    ddlport.DataSource = myds.Tables["Rus_Port"].DefaultView; 
    ddlport.DataBind(); 


    在后台绑定吧.
      

  7.   

    加个<EditTemplate>
         <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
        </EditTemplate>
    就行了。