[英]Doesnot firing OnSelectedIndexChanged event for Dropdownlist control existed in Child Gridview
I have parent gridview and child gridview, In child gridview I have one dropdown list, I need to fire the onselectedindexchanged event for that drop down but it is not firring because it is existed in the child gridview. 我有父GridView和子GridView,在子GridView中有一个下拉列表,我需要为该下拉菜单触发onselectedindexchanged事件,但由于在子Gridview中存在该事件,因此它不会触发。 If I place that dropdown in parent gridview then that selectedindexchanged is firing but I want to place that dropdown in child gridview and need to fire onselectedindexchanged event when user change the dropdown list value .
如果我将该下拉列表放置在父gridview中,则该selectedindexchanged会触发,但是我想将该下拉列表放置在子gridview中,并且需要在用户更改下拉列表值时触发onselectedindexchanged事件。 In the below gridview image you can see the Status column in child gridview.
在下面的gridview图像中,您可以在子gridview中看到“状态”列。 It contains dropdown now I want to fire that dropdown seleted index changed event in code behind.
现在它包含下拉列表,我想在后面的代码中触发该下拉列表的已删除索引更改事件。
<asp:GridView ID="gvCountry" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt="" id="imgsymbol" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlOrders" runat="server" Style="display: none">
<asp:GridView ID="gvBrokerdetails" runat="server" AutoGenerateColumns="false" CssClass="mGrid" OnRowCommand="gvBrokerdetails_RowCommand"
AlternatingRowStyle-CssClass="alt" PagerStyle-CssClass="pgr" GridLines="None" AllowPaging="true">
<Columns>
<asp:BoundField DataField="BrokerName" HeaderText="Name" />
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="Include" Value="0"></asp:ListItem>
<asp:ListItem Text="Exclude" Value="1"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:ImageButton ID="imgBtnDeleteRow" runat="server" Width="25px" Height="25px" CommandName="CrossImageButton" CommandArgument='<%#Eval("BrokerId")%>' ImageUrl="~/images/cross-button.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CountryName" HeaderText="Country Name" />
</Columns>
</asp:GridView>
CodeBehind: 代码背后:
public void ddlStatus_SelectedIndexChanged(object sender, EventArgs e)
{
}
But the above is event is not calling. 但以上是事件未调用。 Is there any other process to achieve or I need to specify any new property in the code.
是否有其他任何过程要实现,或者我需要在代码中指定任何新属性。
Find your gridview inside the RowDataBound Event of parent gridview 在父gridview的RowDataBound事件中找到您的gridview
protected void gvCountry_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
GridView mygrid = e.Row.FindControl("gvBrokerdetails") as GridView;
}
}
than handle the event of mygrid
it is your child grid you can handle any event you want or assign any property to it. 而不是处理
mygrid
事件,它是您的子网格,您可以处理所需的任何事件或为其分配任何属性。 an example of Selected_IndexChanged
is below 下面是
Selected_IndexChanged
的示例
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView mygrid = e.Row.FindControl("gvBrokerdetails") as GridView;
mygrid.SelectedIndexChanged += new EventHandler(mygrid_SelectedIndexChanged);
}
}
void mygrid_SelectedIndexChanged(object sender, EventArgs e)
{
// Write your code here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.