gpt4 book ai didi

asp.net - Gridview 中的 DropDownList SelectedIndexChanged 未触发!

转载 作者:行者123 更新时间:2023-12-04 17:27:32 28 4
gpt4 key购买 nike

不过,我一直在寻找解决方案一段时间,并看到许多帖子向我展示了如何做到这一点,但是当 DropDownList 更改时,我无法触发我的 SelectedIndexChanged 事件。

DropDownList AutoPostBack 设置为 True,我也遵循了以下帖子中的代码:
Link to post

这是我的代码:

.ASPX

    <asp:GridView ID="gvCases" DataKeyNames="UserId" runat="server" AutoGenerateColumns="False" 
BorderWidth="0px" CssClass="gridList" GridLines="None">
<AlternatingRowStyle BackColor="#F7F7F7" />
<Columns>

<asp:BoundField DataField="id" HeaderText="Case Ref" />

<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="clientName" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:BoundField DataField="company" HeaderText="Company" />

<asp:TemplateField HeaderText="Order Date">
<ItemTemplate>
<asp:Label ID="dateTime" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Case Owner">
<ItemTemplate>
<asp:DropDownList ID="iconUsers" runat="server" OnSelectedIndexChanged="iconUsers_SelectedIndexChanged">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="btnDetails" runat="server" CausesValidation="False" Text="Details" />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="btnSchedule" runat="server" CausesValidation="False" Text="Schedule" />
</ItemTemplate>
</asp:TemplateField>



</Columns>
</asp:GridView>

.VB
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


If (Request.IsAuthenticated = False) Then
Response.Redirect("~/admin/default.aspx")
End If


Dim keypadSQL As SqlConnection = New SqlConnection()
keypadSQL.ConnectionString = ConfigurationManager.ConnectionStrings("connKeypad").ConnectionString()


Dim cmdActive As SqlCommand = New SqlCommand()
cmdActive.Connection = keypadSQL
cmdActive.CommandText = "spCasesActive"
cmdActive.CommandType = CommandType.StoredProcedure


Dim daCases As SqlDataAdapter = New SqlDataAdapter
daCases.SelectCommand = cmdActive

Dim dsCases As DataSet = New DataSet()
daCases.Fill(dsCases, "CaseList")

Dim CaseTotal As Integer
CaseTotal = dsCases.Tables(0).Rows.Count

If CaseTotal = 1 Then
iCaseTotal.InnerHtml = CaseTotal & " Case"
Else
iCaseTotal.InnerHtml = CaseTotal & " Cases"
End If

gvCases.DataSource = dsCases
gvCases.DataBind()
cmdActive.Dispose()


If Page.IsPostBack Then

End If

End Sub

Protected Sub gvCases_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvCases.RowDataBound

If e.Row.RowType = DataControlRowType.Header Then

gvCases.Columns(5).ItemStyle.Width() = "60"
gvCases.Columns(6).ItemStyle.Width() = "70"

End If

If e.Row.RowType = DataControlRowType.DataRow Then

Dim rowView As DataRowView = CType(e.Row.DataItem, DataRowView)

Dim strClientName As String
Dim clientName As Label
strClientName = rowView("firstname") & " " & rowView("lastname")
clientName = CType(e.Row.FindControl("clientName"), Label)
clientName.Text = strClientName

Dim strDateTime As String
Dim dateTime As Label
strDateTime = rowView("CaseSent")
dateTime = CType(e.Row.FindControl("dateTime"), Label)
dateTime.Text = FormatDateTime(strDateTime, DateFormat.ShortDate) & "<br />" & FormatDateTime(strDateTime, DateFormat.ShortTime)

gvCases.Columns(3).ItemStyle.Font.Size = 8
gvCases.Columns(5).ControlStyle.CssClass = "btnEdit"
gvCases.Columns(6).ControlStyle.CssClass = "btnSchedule"

Dim intUserId As String
intUserId = Convert.ToString(gvCases.DataKeys(e.Row.RowIndex).Value)



Dim cmd As New SqlCommand("SELECT id, Firstname, Lastname, Firstname + ' ' + Lastname As FullName FROM [users_icon] ORDER BY Firstname, Lastname", New SqlConnection(ConfigurationManager.ConnectionStrings("connKeypad").ConnectionString()))
cmd.Connection.Open()

Dim ddlValues As SqlDataReader
ddlValues = cmd.ExecuteReader()

Dim iconUsers As DropDownList
iconUsers = CType(e.Row.FindControl("iconUsers"), DropDownList)
iconUsers.Style.Add("font-size", "11px")
iconUsers.DataSource = ddlValues
iconUsers.DataValueField = "id"
iconUsers.DataTextField = "FullName"
iconUsers.DataBind()

Dim ListItem1 = New ListItem("Select Case Owner", "0")
iconUsers.Items.Insert("0", ListItem1)
iconUsers.AutoPostBack = True
If IsDBNull(rowView("CaseOwner")) Then
iconUsers.SelectedValue = 0
Else
iconUsers.SelectedValue = rowView("CaseOwner")
End If

AddHandler iconUsers.SelectedIndexChanged, AddressOf iconUsers_SelectedIndexChanged

cmd.Connection.Close()
cmd.Connection.Dispose()


Dim btnDetails As Button = CType(e.Row.FindControl("btnDetails"), Button)
btnDetails.PostBackUrl = "~/admin/detail.aspx?uid=" & intUserId

Dim LabelAddress As Button = CType(e.Row.FindControl("btnSchedule"), Button)
LabelAddress.PostBackUrl = "~/admin/schedule.aspx?uid=" & intUserId

End If

End Sub

Protected Sub iconUsers_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

Response.Write("Function Called")

End Sub

谢谢你的帮助。
J。

最佳答案

有一些类似的问题(见 Event handler not firing using AddHandler
Assign an event to a custom control inside a Repeater control ),但您的特殊情况看起来像您添加了两次处理程序;一次在标记中,一次在数据绑定(bind)中。

我将删除 RowDataBound 事件中的那个(因为它没有做任何事情,因为当您回发时处理程序将丢失,并且在事件实际触发后添加处理程序)。另外,请确保您像@Bala 提到的那样使用 AutoPostBack。

关于asp.net - Gridview 中的 DropDownList SelectedIndexChanged 未触发!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911874/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com