在gridview Asp.Net中使用Dropdownlist?

我想在gridview上使用下拉列表…我有来自asp.net的以下代码

     <asp:ImageButton ID="imgBtnEdicEvento" runat="server" CommandArgument='' CommandName="Edicion" Height="32px" ImageUrl="~/img/pencil_32.png" Width="32px" />     <asp:ImageButton ID="imgBtnDelete" runat="server" CommandName="Borrar" ImageUrl="~/img/1385_Disable_16x16_72.png" onclientclick="return confirm('¿Desea eliminar el registro?');" CommandArgument='' />              <asp:TextBox ID="tbxFecha" runat="server" Text='' ValidationGroup="gpEdicionAgenda">         Pendiente Atendido      <asp:ImageButton ID="imgBtnCRM" runat="server" CommandArgument='' CommandName="CRM" ImageUrl="~/img/activar.png" Width="16px" Height="16px" />     <asp:ImageButton ID="imgBtnVerMas" runat="server" CommandArgument='' CommandName="VerMas" ImageUrl="~/img/search.png" Width="16px" Height="16px" />               

它所说的部分是我想要ddl的部分……

您可能还会注意到我总共使用了4个按钮进行编辑,删除等…但我猜这是另一个故事……

我希望它做几件事……首先,你会注意到我有2个值的下拉列表……这是因为我从查询中获取了一个数据源,这些是本列的2个可能值可以得到…

所以#1应该是……我怎样才能让Ddl的Selected Value成为我从查询中获得的值….

和#2我可以手动更改ddl的值,所以我希望它进行回发并使用新值更新该特定行(我需要回发的原因是这样我可以触发例如ddl ONSELECTEDINDEX CHANGED和因此使用cs文件创建新查询,更新行,然后再次刷新gridview)

我想所有这些都可能与rowcommand有关,就像其他4个按钮的工作方式一样。

我正在使用C#,所以如果你的方法涉及cs文件,你可以帮我使用C#会很有帮助…

谢谢

您应该在GridView上使用OnRowDatabound事件。 喜欢:

     Pendiente Atendido     

然后在.cs后端代码中,您应该找到控件并根据dataitem值设置它的选定值。

 protected void grdvEventosVendedor_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DropDownList dpdListEstatus = e.Row.FindControl("dpdListEstatus") as DropDownList; dpdListEstatus.SelectedValue = DataBinder.Eval(e.Row.DataItem, "FieldName").ToString(); } } protected void dpdListEstatus_SelectedIndexChanged(object sender, EventArgs e) { //your logic goes here } 

您可以在ASPX代码的下拉列表中设置SelectedIndexChanged,并在该后端代码中继续您的逻辑。 Ow,不要忘记在下拉列表中设置autopostback = true。

您可以使用GridView RowDataBound事件访问下拉列表,同样为下拉列表设置selectedindexchanged事件。

请参阅下面的链接,其中显示了您需要的解决方案的基础知识

http://www.codeproject.com/Articles/53559/Accessing-a-DropDownList-inside-a-GridView

 This is what I did that worked for me: **Snippet from aspx:**      **Snippet from code-behind:** protected void grdSAEdit_RowUpdating(object sender, GridViewUpdateEventArgs e) { //Get the refernce to the list control DropDownList ddlRecStatus = (DropDownList)(grdSAEdit.Rows[e.RowIndex].FindControl("ddlRecStatus")); // Add it to the parameters e.NewValues.Add("RECORD_STATUS", ddlRecStatus.Text); } protected string[] Recs_Status { get { return new string[] { "A", "E", "V", "Z" }; } } protected int GetselectedRecStatus(object status) { return Array.IndexOf(Recs_Status, status.ToString()); }