<asp:GridView id="MyGridView" runat="server" CssClass="Note" Width="100%" HeaderStyle-BackColor="SlateBlue" BorderColor="Thistle" BorderStyle="Ridge" AutoGenerateColumns="true"  DataKeyNames="bw" OnRowCommand="MyGridView_RowCommand"  OnRowCreated="MyGridView_RowCreated" >
      
      <Columns>  
      <asp:TemplateField>
                    <ItemTemplate>
                  <asp:LinkButton ID="xiangmu" CommandName="xm"  CommandArgument="" runat="server" OnClientClick="LinkButton_Click"><%#Eval("bw")%></asp:LinkButton>           
                    </ItemTemplate>
                    </asp:TemplateField>
      </Columns>
      </asp:GridView> 
以上是前台,将一个linkbutton作为模板列放在gridview中,显示值为数据库绑定字段。
后台如下:
protected void MyGridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
 LinkButton lb = new LinkButton();
int index = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = MyGridView.Rows[index];
            lb = (LinkButton)row.Cells[0].FindControl("xiangmu");
            String buwei = lb.text;
至此,断点调试时,发现lb.text为空值,很奇怪,但如果用lb.ClientID,都可以取到这个单元格内的Linkbutton,
请问高手们,为何取不到text值呢?

解决方案 »

  1.   

    自己解决了,呵呵。需把显示的<%#Eval( "bw ")%>直接赋给linkbutton的text属性就可以了。真是白痴的问题。
      

  2.   

    其实与你自己的写法有关,按照你上面的写法,后台解析生成gridview时并没有把<%#Eval("bw")%>当成linkbutton的text属性,而只是解析成了HtmlAnchor里的innerText;如果想要后台可取到Text属性,应该使用给linkbutton的text赋值的方式如下,虽然两者最终解析出的html代码没什么不同                <asp:TemplateField>
                            <ItemTemplate>
                                <asp:LinkButton ID="xiangmu" CommandName="xm" CommandArgument=""  runat="server" Text=<%#Eval("fff")%>
                                    OnClientClick="LinkButton_Click"></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>