我在UpdatePanel中设置了一个GridView。 GridView有一个与Gridview1_SelectedIndexChanged方法绑定的SELECT CommandField。我想在选择一行后刷新GridView,但它永远不会。我尝试了几种不同的方案,但似乎都没有。
以下是已清理的代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
PagerSettings-Visible="true" EnableViewState="False" >
<Columns>
<asp:CommandField ButtonType="Image"
SelectImageUrl="~/images/icon.gif"
ShowSelectButton="True" />
<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
</Columns>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
数据源看起来像这样......
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DataObjectTypeName="myNamespace.Item"
InsertMethod="myInsertMethod"
SelectMethod="mySelectMethod"
TypeName="myNamespace.ItemMgr"
UpdateMethod="myUpdateMethod">
</asp:ObjectDataSource>
答案 0 :(得分:3)
我想我看到了你的问题。尝试将DataKeyNames参数添加到GridView,并使用您要操作的行的ID。接下来删除“触发器”部分,因为您不需要它们。由于您希望对某些操作进行操作,因此将CommandField更改为其他选项之一,例如您当前未使用的Delete。接下来修改您的ObjectDataSource,在myNamespace.ItemMgr中定义一个DeleteMethod,它接受来自GridView的Id(DataKeyNames参数)并执行您想要执行的任务。方法返回后,它将从定义的SelectMethod刷新GridView。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1"
PagerSettings-Visible="true" EnableViewState="False"
DataKeyNames="Id" >
<Columns>
<asp:CommandField DeleteImageUrl="/images/icon.gif"
DeleteText="Some Text"
ShowDeleteButton="True"
ButtonType="Image" />
<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
<asp:BoundField DataField="Title" HeaderText="Title"
SortExpression="Title" />
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DeleteMethod="myDeleteMethod" SelectMethod="mySelectMethod"
TypeName="myNamespace.ItemMgr">
</asp:ObjectDataSource>
答案 1 :(得分:1)
如果我理解你的话,你需要在每次回发时将数据源绑定到你的网格。