【问题标题】:Error while data binding to grid [duplicate]数据绑定到网格时出错[重复]
【发布时间】:2013-07-22 13:18:10
【问题描述】:

我在 gridview 中有以下代码:

 <% If Eval("LabelType").ToString() = "Singleline" Then%>  <asp:TextBox ID="txtSingleLine" runat="server" ></asp:TextBox> <% End If%>
 <% If Eval("LabelType").ToString() = "Multiline" Then%>  <asp:TextBox ID="txtMultiline" runat="server"  TextMode="MultiLine" ></asp:TextBox> <% End If%>                                            
  <% If Eval("LabelType").ToString() = "Image" Then%>  <asp:FileUpload ID="FileUpload1" runat="server" /> <% End If%>

我收到以下错误:

Eval()、XPath() 和 Bind() 等数据绑定方法只能 在数据绑定控件的上下文中使用

this的问题我知道应该添加#,但是当我添加为:

它不接受这个(在整个语句下方显示蓝线)。

请告诉我哪里出错了。

请帮帮我。

我正在使用 vb.net,但用 c# 回答也很有帮助。

【问题讨论】:

  • @KevinKunderman 我已经在我的问题中提到了这一点,我已经提到了这个问题
  • 你可以为整个网格添加标记

标签: c# asp.net .net vb.net visual-studio-2008


【解决方案1】:

您可以尝试根据 LabelType 的值设置每个控件的可见性,如下所示:

<asp:TextBox ID="txtSingleLine" runat="server" Visible="<%# Eval("LabelType").ToString() == "Singleline" %>"></asp:TextBox>
<asp:TextBox ID="txtMultiline" runat="server"  TextMode="MultiLine"  Visible="<%# Eval("LabelType").ToString() == "Multiline" %>" ></asp:TextBox>
<asp:FileUpload ID="FileUpload1" runat="server"  Visible="<%# Eval("LabelType").ToString() == "Image" %>" />

【讨论】:

  • 谢谢,这是最简单的方法 :)
  • 但是,无论文本是什么,这总是向我显示单行文本框。例如。如果是多行,则显示单行+多行,如果是图像,则显示单行+图像上传器
  • 奇怪,贴出gridview的标记,以及填充它的代码。
  • 是的,它完成了,这是我的错误。谢谢,有帮助的答案:)
【解决方案2】:

就像错误说您不能在数据绑定控件之外拥有 Eval,所以我建议您将控件动态插入到 PlaceHolder 控件中,如下所示:

标记:

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

代码隐藏:

If LabelType = "Singleline" Then
    ' Create textbox and add to placeholder
    Dim textbox = New TextBox()
    textbox.ID = "txtSingleLine"
    PlaceHolder1.Controls.Add(textbox)
Else If LabelType = "Multiline" Then
    ' Create textbox with multi-line text mode and add to placeholder
    Dim multilinetextbox = New TextBox()
    multilinetextbox.ID = "txtMultiline"
    PlaceHolder1.Controls.Add(multilinetextbox)
Else If LabelType = "Image" Then
    ' Create file upload and add to placeholder
    Dim fileupload = New FileUpload()
    fileupload.ID = "FileUpload1"
    PlaceHolder1.Controls.Add(fileupload)
End If

注意:上面代码中的LabelType 是您在Eval("LabelType").ToString() 中所做操作的字符串表示形式。

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 2012-07-13
    • 2011-05-11
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 2012-12-25
    • 2016-11-01
    相关资源
    最近更新 更多