C# 更改下拉列表时从GridView更新
我有一个GridView控件,我想有两个可见字段,一个标签和一个下拉列表。我希望将ItemTemplate定义为下拉值,而不是使用RowEditTemplate 在下拉列表发生更改的事件中,我希望执行一些代码,从中可以获取gridview行的整数键以及下拉列表的新选定值。如下所示:C# 更改下拉列表时从GridView更新,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个GridView控件,我想有两个可见字段,一个标签和一个下拉列表。我希望将ItemTemplate定义为下拉值,而不是使用RowEditTemplate 在下拉列表发生更改的事件中,我希望执行一些代码,从中可以获取gridview行的整数键以及下拉列表的新选定值。如下所示: <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="pk_id" onr
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="pk_id" onrowdeleting="GridView2_RowDeleting"
onrowcommand="GridView2_RowCommand">
<Columns>
<asp:BoundField DataField="pk_id" Visible="False" />
<asp:BoundField DataField="Column1" HeaderText="Column1" />
<asp:TemplateField HeaderText="Column2">
<ItemTemplate>
<asp:DropDownList ID="DropDownList3" runat="server"
DataSourceID="SqlDataSource" DataTextField="name"
DataValueField="id2"
SelectedValue='<%# Bind("id2") %>'
AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:Main %>"
SelectCommand="get_TestData" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
下拉列表已填充并正确选择了值,但我无法通过下拉列表使删除或更新正常工作。我已经尝试过实现这些功能,但是当下拉菜单触发回发时,row命令似乎没有启动。即使它真的触发了,我也不确定如何获得所需的值。有更好的方法吗?我注意到您的代码中有一件事,您在页面加载时调用了GridView2.DataBind()。请尝试将其放在页面预渲染中,因为当触发事件时,它会调用页面加载,并且您的gridview将在处理事件之前刷新
但是,它并不总是会导致问题我注意到,在您的代码中有一件事,您在页面加载时调用了GridView2.DataBind()。请尝试将其放入页面预渲染中,因为当触发事件时,它会调用页面加载,并且您的gridview将在处理事件之前刷新
但是,它并不总是会导致问题请尝试将此代码放入页面加载中
protected void Page_Load(object sender, EventArgs e)
{
if(!isPostback)
{
GridView2.DataSource = new Person(id).GetDataSet();
GridView2.DataBind();
}
}
这将解决您的问题尝试将此代码放入页面加载中
protected void Page_Load(object sender, EventArgs e)
{
if(!isPostback)
{
GridView2.DataSource = new Person(id).GetDataSet();
GridView2.DataBind();
}
}
这将解决您的问题。是否为页面启用了ViewState?很棘手。是否为页面启用了ViewState?非常好的一点,当我尝试使用其他解决方案时,这确实带来了问题。我采纳了你的建议,效果很好。谢谢非常好的一点,当我尝试使用另一种解决方案时,这确实带来了一个问题。我采纳了你的建议,效果很好。谢谢