我遇到了麻煩,我無法弄清楚。 我有一個asp:gridview(sqldatasource)與項目模板內的asp:dropdownlist的數據綁定。下拉列表有一個onSelectedIndexChanged事件監聽器,但它不會觸發。asp.net asp:DropDownList onSelectedIndexChanged沒有在數據綁定中發射asp:GridView
這裏的標記:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
EmptyDataText="There are no data records to display." EnableViewState="True" >
<Columns>
<asp:TemplateField HeaderText="Delete user">
<ItemTemplate>
<asp:Button runat="server" ID="btnDelete" CommandName="Delete" CommandArgument='<%# Eval("UserId") %>'
Text="Delete" OnCommand="DeleteUser" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Block users">
<ItemTemplate>
<asp:Button runat="server" ID="btnBlock" CommandName="Block" CommandArgument='<%# Eval("UserId") %>'
Text="Block" OnClick="btnBlock_Click" Visible='<%# !Convert.ToBoolean(Eval("IsLockedOut")) %>' />
<asp:Button runat="server" ID="btnDeblock" CommandName="Deblock" CommandArgument='<%# Eval("UserId") %>'
Text="Deblock" OnClick="btnBlock_Click" Visible='<%# Convert.ToBoolean(Eval("IsLockedOut")) %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Change role">
<ItemTemplate>
<asp:DropDownList ID="ChangeRole" runat="server" EnableViewState="false"
OnSelectedIndexChanged="ChangeRole_SelectedIndexChanged" AutoPostBack="true"
ToolTip='<%# Bind("UserName") %>' >
<asp:ListItem Text="Choose a role" Value="" Selected="True" />
<asp:ListItem Text="Admin" Value="" />
<asp:ListItem Text="Member" Value="" />
<asp:ListItem Text="Visitor" Value="" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="RoleName" HeaderText="Current role" ReadOnly="true" SortExpression="RoleName" />
<asp:BoundField DataField="UserName" HeaderText="Username" ReadOnly="True" SortExpression="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
<asp:BoundField DataField="LastLoginDate" HeaderText="Last login"
SortExpression="LastLoginDate" />
<asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked"
SortExpression="IsLockedOut" />
<asp:BoundField DataField="FailedPasswordAttemptCount"
HeaderText="Failed logins"
SortExpression="FailedPasswordAttemptCount" />
<asp:BoundField DataField="Comment" HeaderText="Comments"
SortExpression="Comment" />
</Columns>
</asp:GridView>
<asp:Label ID="lblSuccess" runat="server" Text="Database updated successfully." Visible="false" meta:resourcekey="success" />
<asp:Label ID="lblError" runat="server" Text="An error occured, database was not updated." />
</ContentTemplate>
</asp:UpdatePanel>
,因爲我想這可能是相關的我已經添加UpdatePanel的代碼。 在後面的代碼,我確信綁定在GridView只有!Page.IsPostBack
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GridView1.DataSourceID = "SqlDataSource1";
GridView1.DataKeyNames = new String[] {"UserId"};
GridView1.DataBind();
}
}
然後我做了一個ActionListener的下拉列表
protected void ChangeRole_SelectedIndexChanged(object sender, EventArgs e)
{
Logger.Info("it's alive!", "Chaning role");
}
我已經嘗試過的EnableViewState =「真|| False「(對於gridview和dropdownlist)和autoPostBack =」True || False「,但日誌文件不顯示」它是活着的「消息。改變索引時沒有觸發事件。
任何想法?
乾杯更新到您的問題 – MVCKarl
謝謝。 ..我很高興結束了! – DerpyNerd