我有一個GridView
,你可以點擊一行,它應該調用SelectedIndexChanged
方法(根據選中的行更新頁面的另一部分)。我之前做過類似於此的工作,並且工作正常,但我似乎無法得到SelectedIndexChanged
部分因某種原因而被調用。爲什麼我的GridView的SelectedIndexChanged事件不會觸發?
該頁面,其中有一個form runat="server"
標籤的母版頁舉行,和<asp:ScriptManager>
標籤
我使用e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(Me.gridMessages, "Select$" & e.Row.RowIndex))
允許SelectedIndexChanged
通過點擊行的任意開火。
爲了檢查代碼是否可以正常工作,我添加了一個CommandField
,其中SelectButton
成功啓動,但我寧願找到一個解決方案,而不必使用它。
代碼在下面 - 任何幫助將不勝感激。由於
GridView
:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:HiddenField runat="server" ID="hdnScrollPosition" />
<asp:GridView ID="gridMessages" runat="server" CssClass="gridView" AutoGenerateColumns="False"
AllowPaging="true" GridLines="None" PageSize="10" ShowHeader="True"
EmptyDataText="--No Messages Received--" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Messages Received" HeaderStyle-HorizontalAlign="Left" HeaderStyle-CssClass="headerClass">
<ItemTemplate>
....
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
代碼隱藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Me.gridMessages.DataSource = ...
Me.gridMessages.DataBind()
End If
End Sub
Protected Sub gridMessages_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridMessages.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#D2E6F8'")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#ffffff'")
e.Row.Attributes.Add("onclick", "saveScrollPosition(); " & ClientScript.GetPostBackClientHyperlink(Me.gridMessages, "Select$" & e.Row.RowIndex))
End If
End Sub
SelectedIndexChanged
(其中不閃光):
Protected Sub gridMessages_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gridMessages.SelectedIndexChanged
Response.Redirect("test.aspx")
End Sub
我想,以避免實際使用按鈕來選擇一排,這就是爲什麼我添加上述兩種以下的額外屬性(關於分裂的代碼的建議感謝 - 將這樣做)。該e.Row.Attributes.Add( 「點擊」,ClientScript.GetPostBackClientHyperlink(Me.gridMessages, 「選擇$」 &e.Row.RowIndex))行應該工作,以便在GridView不需要CommandField中。想法? – jdtaylor
嗯...我從來沒有嘗試過這樣的事情。如果你沒有創建按鈕,我不確定ASP.NET會聽什麼(你可能是對的,如果沒有按鈕,它可能會工作得很好)。也許嘗試創建按鈕,以確保您有回發超鏈接的東西完全正確嗎?我認爲,這將是編輯回原始問題的一個很好的細節。 – jwiscarson
剛剛添加按鈕和SelectedIndexChanged在使用時觸發。我之前使用過onclick屬性,它的工作原理,所以我不確定爲什麼它不與這 – jdtaylor