C# ASP.NET:从选定的gridview项获取数据-linq到实体数据源
我有一个asp.net页面,后面有c#代码。我有一个事件在c#中触发,当gridview上选定的索引更改时。。。这个gridview绑定到一个entites数据源,我需要找到一种方法,告诉我的代码调用selected\u index\u changed()方法时所选对象的id。有没有关于如何最好地做到这一点的想法 当前事件处理程序代码:C# ASP.NET:从选定的gridview项获取数据-linq到实体数据源,c#,asp.net,gridview,linq-to-entities,selectedindexchanged,C#,Asp.net,Gridview,Linq To Entities,Selectedindexchanged,我有一个asp.net页面,后面有c#代码。我有一个事件在c#中触发,当gridview上选定的索引更改时。。。这个gridview绑定到一个entites数据源,我需要找到一种方法,告诉我的代码调用selected\u index\u changed()方法时所选对象的id。有没有关于如何最好地做到这一点的想法 当前事件处理程序代码: protected void VehiclesGridView_SelectedIndexChanged(object sender, EventArgs e)
protected void VehiclesGridView_SelectedIndexChanged(object sender, EventArgs e)
{
if (ChangeAttemptedId && !IsSavedId)
{
Alert.Show("Dispatch assignment saved... (But you forgot to click Confirm or Cancel!)");
}
IsSavedId = false;
ChangeAttemptedId = true;
int selectedIndex = VehiclesGridView.SelectedIndex + 1;
getNextRide(selectedIndex); //TODO: FIX
}
ASP.NET代码:
<asp:EntityDataSource ID="VehiclesEDS" runat="server" EnableDelete="True"
EnableFlattening="False" EnableInsert="True" EnableUpdate="True"
EntitySetName="Vehicles" ContextTypeName="RamRideOps.RamRideOpsEntities" >
</asp:EntityDataSource>
<asp:UpdatePanel ID="SelectCarUP" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="VehiclesGridView" runat="server" AllowPaging="True"
AllowSorting="True" DataSourceID="VehiclesEDS" AutoGenerateColumns="False"
onselectedindexchanged="VehiclesGridView_SelectedIndexChanged"
BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px"
CellPadding="3" GridLines="Vertical" ShowHeaderWhenEmpty="True" AutoPostBack="True">
<AlternatingRowStyle BackColor="#DCDCDC" />
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="GVSelectButton" runat="server" CausesValidation="False"
CommandName="Select" Text="Select"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CarNum" HeaderText="Car" ReadOnly="True"
SortExpression="CarNum" />
<asp:BoundField DataField="CurrPassengers" HeaderText="Passengers"
ReadOnly="True" SortExpression="CurrPassengers" />
<asp:BoundField DataField="MaxPassengers" HeaderText="Capacity" ReadOnly="True"
SortExpression="MaxPassengers" />
<asp:BoundField DataField="Status" HeaderText="Status" ReadOnly="True"
SortExpression="Status" />
<asp:BoundField DataField="StartAdd" HeaderText="Pick-Up Address"
ReadOnly="True" SortExpression="StartAdd" />
<asp:BoundField DataField="EndAdd" HeaderText="Drop-Off Address"
ReadOnly="True" SortExpression="EndAdd" />
<asp:BoundField DataField="AvgRideTime" HeaderText="Avg. Ride Time"
ReadOnly="True" SortExpression="AvgRideTime" />
</Columns>
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#004812" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
<SelectedRowStyle BackColor="#C6940D" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#C6940D" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#9F770B" />
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
将EventArgs e更改为GridViewSelectEventArgs时出错:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0123: No overload for 'VehiclesGridView_SelectedIndexChanged' matches delegate 'System.EventHandler'
Source Error:
Line 90: <asp:UpdatePanel ID="SelectCarUP" runat="server" UpdateMode="Conditional">
Line 91: <ContentTemplate>
Line 92: <asp:GridView ID="VehiclesGridView" runat="server" AllowPaging="True"
Line 93: AllowSorting="True" DataSourceID="VehiclesEDS" AutoGenerateColumns="False"
Line 94: onselectedindexchanged="VehiclesGridView_SelectedIndexChanged"
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。
编译器错误消息:CS0123:“VehiclesGridView\u SelectedIndexChanged”没有重载与委托“System.EventHandler”匹配
源错误:
第90行:
第91行:
第92行:如果要传递给getNextRide的参数确实与所选索引相同,那么我将创建一个如下的事件处理程序
protected void VehiclesGridView_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
{
if (ChangeAttemptedId && !IsSavedId)
{
Alert.Show("Dispatch assignment saved... (But you forgot to click Confirm or Cancel!)");
}
IsSavedId = false;
ChangeAttemptedId = true;
int selectedIndex = e.NewSelectedIndex;
getNextRide(selectedIndex); //TODO: FIX
}
此外,在事件处理程序中,您可以访问网格视图的各个成员,如下所示:VehiclesGridView.Rows[e.NewSelectedIndex].Cells[i]
其中i
是单元格的索引
另外,你能在设置VehiclesGridView
数据源的那一行贴上帖子吗,这样我就可以想出一个更清晰的答案了我最近不得不这么做,我刚刚将新索引应用到GridView数据绑定到的集合中。如果我理解正确,这可以工作,如果我向所选对象的db中添加一个“referenceIndex”字段,然后根据所选索引从aspx页面中绑定它。您知道要使用什么代码进行绑定吗?我希望您传递到事件处理程序的eventargs对象具有表示新索引的属性。不需要对数据库进行任何更改。你能发布你现有方法处理程序的代码吗?当然,上面已经发布了。也许我还是有点不清楚你所说的“将新索引应用于集合”是什么意思。好吧,我想我已经开始有所进展了,但是当我尝试使用GridViewSelectEventArgs而不是EventArgs时,它给了我一个编译错误(见上文),而且它也不允许我强制转换。我在上面发布了更多的代码。此外,我是否正确理解“VehiclesGridView.Rows[e.NewSelectedIndex].Cells[I]”将允许我访问与所选特定行关联的“卡号”?这就是我需要的价值。感谢您的帮助(:如果您的卡号显示在gridview中,那么它应该会显示出来。@SHeinema好的,您是对的,gridview SelectEventArgs
用于不同的事件处理程序,(OnSelectedIndexChangeing
)您应该仍然能够使用VehiclesGridView.SelectedRow.Cells[i]