网格视图中的数据源和 Eval

发布于 2024-08-13 12:08:28 字数 1173 浏览 2 评论 0原文

我有一个 gridview,使用 linqdatasource 和我创建的 datamodelcontext。

为什么我可以这样做:

<asp:TemplateField>
    <ItemTemplate>
       <asp:Label ID="Label3" runat="server" Text='<%# Eval("tblUserProfile.Phone") %>'>
       </asp:Label>
     </ItemTemplate>
 </asp:TemplateField>

但是这个:

<asp:BoundField DataField="tblUserProfile.Phone" HeaderText="ph" ReadOnly="True"/>    

给出错误:

“在选定的数据源上找不到名为“tblUserProfiles.Phone”的字段或属性。”

如果数据源上不存在该字段或属性,那么在第一种情况下它如何工作? eval 到底做了什么?我认为它只是让您访问数据源上的字段?

对此还很陌生,所以如果有人能给我一个基本的解释,我将不胜感激。

对于额外的 cookie,您知道为什么这可以让我编辑此字段,但是当我单击 gridview 上的更新时,它实际上不会保存它吗?

  <asp:TemplateField>
     <ItemTemplate>
        <asp:Label ID="Label3" runat="server" Text='<%# Eval("tblUserProfile.Phone") %>'>
        </asp:Label>
     </ItemTemplate>
     <EditItemTemplate>
        <asp:TextBox ID="tb1" runat="server" Text='<%#Bind("tblUserProfile.Phone") %>'></asp:TextBox>
      </EditItemTemplate>
   </asp:TemplateField>

I have a gridview using a linqdatasource with a datamodelcontext that I've created.

Why is it that I can do this:

<asp:TemplateField>
    <ItemTemplate>
       <asp:Label ID="Label3" runat="server" Text='<%# Eval("tblUserProfile.Phone") %>'>
       </asp:Label>
     </ItemTemplate>
 </asp:TemplateField>

But this:

<asp:BoundField DataField="tblUserProfile.Phone" HeaderText="ph" ReadOnly="True"/>    

Gives an error:

"A field or property with the name 'tblUserProfiles.Phone' was not found on the selected data source."

If the field or property doesn't exist on the datasource, how does it work in the first case? What does the eval do exactly? I thought it just let you access a field on the datasource?

Pretty new to this, so if someone could give me a basic explanation I'd appreciate it.

For an extra cookie, any ideas why this would let me edit this field, but when I click update on the gridview it wouldn't actually save it?

  <asp:TemplateField>
     <ItemTemplate>
        <asp:Label ID="Label3" runat="server" Text='<%# Eval("tblUserProfile.Phone") %>'>
        </asp:Label>
     </ItemTemplate>
     <EditItemTemplate>
        <asp:TextBox ID="tb1" runat="server" Text='<%#Bind("tblUserProfile.Phone") %>'></asp:TextBox>
      </EditItemTemplate>
   </asp:TemplateField>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神回复 2024-08-20 12:08:28

也许您不需要使用 tblUserProfile 限定 Phone 字段?尝试一下没有;只需使用DataField="Phone"

Perhaps you do not need to qualify the Phone field with tblUserProfile? Try it without; just use DataField="Phone".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文