0

请我在尝试获取由实体数据源限制的 Web 应用程序中的 gridview 控件的主键时遇到问题。我有一个名为人员的表,该表上有大约 25 列。该表的主键由一个两列的组合,即列 [StaffID] 和列 [SchoolID]。我使用 entitydatasource 控件连接到表。我没有选择所有列,我只选择了其中的四个列。下面是 entitydatasource 控件的标记。

        ContextTypeName="DEMOWEBAPPLICATION.PriSecDbEntities" EnableFlattening="False" 
        AutoGenerateOrderByClause="true" 
        EntitySetName="Staffs" EntityTypeFilter="Staff" 
        Select="it.[StaffID], it.[SchoolID], it.[Surname], it.[FirstName]">
        <OrderByParameters>
        <asp:Parameter 
        DefaultValue="StaffID" />

        </OrderByParameters>
    </asp:EntityDataSource>

我将此绑定到一个gridview控件。我的问题是我想要一种情况,当我单击gridview上的一行时,我将能够在不同的文本框控件上显示我的员工表中的不同列(例如,我将能够做到像这样的 txtSurname.text=newStaff.name 等等),我将能够编辑和更新它,它会在数据库上更新。我一直在尝试创建人员对象并通过在 vb.net Dim newStaff As Staff = DirectCast(grdLoadStaffDetails.SelectedPersistedDataKey("StaffID"), Staff) 中的 gridview selectedindexchanged 事件处理程序中执行此操作来获取主键列,但它抛出增加了无效的演员表执行时间。在过去的五个小时里,我一直在拔头发。非常感谢任何帮助。谢谢

4

1 回答 1

1

DataKeyNames="StaffID"与您的主键列名称绑定。

<asp:GridView ID="gvwAllUserInfo" runat="server" 
            AutoGenerateColumns="False" DataKeyNames="StaffID"
                OnRowEditing="GridView_RowEditing" AllowPaging="True" 

获取代码中的人员

mygridview.SelectedIndex = CInt(e.NewEditIndex)
StaffID= CInt(mygridview.SelectedDataKey.Value)
于 2013-09-06T09:29:49.787 回答