加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – GridView中的DropDownList SelectedIndexChanged没有

发布时间:2020-12-16 03:33:35 所属栏目:asp.Net 来源:网络整理
导读:我一直在寻找一个解决方案,但看到许多帖子告诉我如何做但但是当DropDownList被更改时我无法触发我的SelectedIndexChanged事件. DropDownList AutoPostBack设置为True,我也遵循以下帖子中的代码: Link to post 这是我的代码: .ASPX asp:GridView ID="gvCase
我一直在寻找一个解决方案,但看到许多帖子告诉我如何做但但是当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),但你的特殊情况看起来像你正在添加处理程序两次;一次在标记中,一次在数据绑定上.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读