如何在gridview中查找标签ID(ItemTemplate)和文本框ID(EditItemTemplate)?

时间:2012-07-13 00:59:51

标签: gridview textbox controls label itemtemplate

我需要一些帮助。

在我的gridview(绑定到SQLDataSource)中,项目模板中的标签(lblDI)和编辑项模板中的文本框(tbEditDI)

 <asp:GridView ID="gvDiscussItem" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="Black" BorderStyle="Double" BorderWidth="1px" 
CellPadding="2" DataKeyNames="discussionID" DataSourceID="SQLDiscussItems" 
ForeColor="Black" ShowHeaderWhenEmpty="True" 
style="font-size: small" Width="600px" >
<Columns>
<ItemTemplate>
<asp:Label ID="lblDI" runat="server" Text='<%# Bind("discussionItem") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbEditDI" runat="server" Text='<%# Bind("discussionItem") %>' 
TextMode="MultiLine" onkeyup="SettingEditHeightDI(this);"></asp:TextBox>
</EditItemTemplate>
</asp:GridView>

如何使标签(lblDI)成为多行显示数据,文本框(tbEditDI)适合页面加载的所有文本?

我有这些代码,我可以用来作为参考帮我制作标签多线,文本框适合页面大小的尺寸,但它现在不起作用,至于标签,我无法得到控制要在aspx.cs页面中使用的标签,以及控制文本框以通过javascript自动调整大小。

// to auto resize the textbox on pageload automatically using javascript
  document.getElementById("<%=tbAgenda.ClientID%>").style.height = document.getElementById("<%=tbAgenda.ClientID%>").scrollHeight + "px";

// to display multiline label in the aspx.cs page
 lblAgenda.Text = recentMinute.Agenda.Replace("\n", "<br/>"); // displays multilines textbox texts in a multiline label. For retrieval from database

请帮助我,我在这个学术项目中遇到了很大麻烦。 :'(

2 个答案:

答案 0 :(得分:0)

您可以在gridview的RowDataBound事件上添加此服务器端代码。类似的东西:

public void gvDiscussItem_RowDataBound(Object sender, GridViewRowEventArgs e)
{

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      // find your control...
      var lblDI = e.Row.FindControl("lblDI") as Label;
      if (lblDI != null)
      { 
         //fill the label and add the break-lines.
         lblDI.Text = DataBinder.Eval(Container.DataItem, "discussionItem").ToString().Replace("\n","<br />");
      }

    }
}

答案 1 :(得分:0)

Try this 

For TextBox Control

Textbox EditTextBox = (TextBox)gvDiscussItem.FindControl("tbEditDI");

For Label Control

Label EditTextBox = (Label)gvDiscussItem.FindControl("lblDI");