【问题标题】:Bind label text inside gridview在gridview中绑定标签文本
【发布时间】:2013-05-22 11:11:58
【问题描述】:

我看到了一些网格视图示例,其中数据从 sql 或其他数据库绑定到网格视图。问题是——

<ItemTemplate> 
    <asp:Label ID="label1"  runat="server" Text='<%#Bind("name") %>'>  
    </asp:Label>  
</ItemTemplate>  

Text='&lt;%#Bind("name")%&gt;' 是如何工作的?标签从哪里获取文本?

我正在使用mysql 我有一个表格下拉列表和一个按钮。每当用户从 ddl 中选择任何表格并单击按钮时,我都会将所选表格与网格绑定。

我为编辑和删除按钮启用了autogenerating=true

我会为此编写代码,但是每当用户选择不同的表格时,网格会显示编辑和删除按钮吗? Bind("value") 呢?每张桌子都会改变吗?

可能是一个愚蠢的问题,但请帮忙!

【问题讨论】:

标签: c# asp.net mysql gridview


【解决方案1】:

#Bind("name") 命令将从您绑定到 GridView 的任何表中插入名为 name 的列的值。因此,您的每个表都需要一个名为 name 的列来填充此标签。 此外,#Bind 应该用于显示和更新数据。如果您只需要显示数据,#Eval("name") 是更好的选择,因为它是只读的。

【讨论】:

  • @Netricity- 如果每个表都没有列名 name 怎么办。如何在ddl中绑定用户选择的表名?以及如何允许用户插入新记录?因为网格允许编辑、更新和删除。插入新记录呢?
  • 也许只设置 GridView 的AutoGenerateColumns="true" 那么你根本不需要使用#Eval 或定义任何ItemTemplate?这取决于您需要多少自定义显示。或者,将表的数据公开为实现通用接口的类?
  • @Netricity- 是的,我已经设置了AutoGeneratecolumns="true",并且网格正在显示用户选择的每个表的数据。但是我如何启用编辑?因为我认为网格使用列的 id 来查找触发事件的控件-TextBox txtNewName = (TextBox)grdContact.FooterRow.FindControl("txtNewName");
  • 但这只有在我知道确切的列名并将其绑定到&lt;ItemTemplateField&gt; 时才能完成。现在我将不知道列名,所以我刚刚在我的网格中添加了一个复选框。其余的都是自动生成的。因此,我找不到选中了哪个复选框。所以我无法找到解决它的方法。
  • 我想我可以以编程方式添加&lt;TemplateField&gt;。我可以从GridView1.HeaderRow.Cells.Count 获取列数,然后我将循环并添加一个&lt;TemplateField&gt;,但是我必须再添加一个&lt;ItemTemplate&gt;,然后在其中添加标签。还有一个带有文本框的&lt;EditItemTemplate&gt;。我可以以编程方式完成所有这些吗?
【解决方案2】:

你必须使用#Eval,例如,

            <EditItemTemplate>
        <asp:Label ID="lbleditusr" runat="server" Text='<%#Eval("Username") %>'/>
        </EditItemTemplate>

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多