0

我一直在尝试 Telik 的 ajax 控件,到目前为止它们还没有给我带来很大的问题。我正在使用具有编辑功能的 ajax radgrid,他们的建议之一是使用以编程方式填充控件的 Web 表单用户控件 (.ascx) 来编辑特定的网格记录。

我可以很好地打开 Web 表单,并使用以下控件在代码隐藏中填写它:

  • 文本框
  • 标签
  • 下拉列表

对于我一直在测试编辑功能的网格,要编辑一条记录,我需要 3 个下拉列表才能正确编辑它,现在这就是我的问题开始的地方。

如果我在添加控件之间放置断点并执行以下步骤,我有一个添加记录的函数,如果它们符合某些元数据标准:

  • 添加控件的第一“行”(标签和文本框)
  • 添加控件的第二“行”(标签和下拉列表)

    如果我停在这里并步入结束函数,则会发生以下情况,两个标签都具有正确的文本以及文本框,但下拉列表没有那么多,即使我已将所选索引设置为“2”并在快速观看中停留在 2,一旦显示 web 表单,默认值值重置为“0”

  • 添加控件的第三“行”(标签和下拉列表)

    如果我在这里停下来并进入函数的末尾,即使在 quickwatch 中一切都很好,一旦显示/加载 Web 表单,两个下拉列表将在其中具有相同的值,并且它们的 selectedindex = 0

编辑:我将描述我期望的行为:

  1. 第一个下拉列表(1)要填充例如“None,A,B,C,D,E,F,G”,并以“A”作为选定项
  2. 第二个下拉列表(2)要填充例如“None,F1,F2,F3,F4,F5,F6”,并将“F3”作为选定项

这是我得到的行为:

加载 Web 表单后,dropdown(1) 和 dropdown(2)将填充“None,F1,F2,F3,F4,F5,F6”,并且它们的选择值为“None”,即使它设置为其他值

我错过了一些特殊的 ascx 相关事件吗?

这是我的一些代码:

详细信息.ascx

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="Details.ascx.vb" Inherits="Project.Details" %>

<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

     <div id="template_edit" style="background-color:red" runat="server">
        <%-- div onto which all my controls are addded --%>


    </div>

    <div id="editfooter">
            <asp:Button ID="Button_aceitar" Text="Update" runat="server" CommandName="Update" Visible="true"></asp:Button>
            <asp:Button ID="Button2" Text="Insert" runat="server" CommandName="PerformInsert" Visible="true"></asp:Button>
            &nbsp;
            <asp:Button ID="Button_cancelar" Text="Cancelar" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button>

            <asp:Label ID="LabelLOG" runat="server" Text="Label" Visible="False"></asp:Label>
    </div>

details.ascx.vb 上的一些代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Try
                    sOper = Session("OPERACAO_Edit")
                    gPeriodo = Session("PERIODO_Edit")
                    gClasse = Session("CLASSE_Edit")
                    gSistema = Session("SISTEMA_Edit")
                Catch ex As Exception

                End Try

gEG = Session("EntidGest")
                Select Case gClasse & gSistema
                    Case 11
                        gMNID = 1
                    Case 12
                        gMNID = 2
                    Case 21
                        gMNID = 3
                    Case 22
                        gMNID = 4
                    Case 31
                        gMNID = 5
                    Case 32
                        gMNID = 6
                End Select

                Add_Controls(sOper)

Else
                gPeriodo = Request.QueryString("periodo")
                gClasse = Request.QueryString("classe")
                gSistema = Request.QueryString("sistema")
                gEG = Session("EntidGest")
                Select Case gClasse & gSistema
                    Case 11
                        gMNID = 1
                    Case 12
                        gMNID = 2
                    Case 21
                        gMNID = 3
                    Case 22
                        gMNID = 4
                    Case 31
                        gMNID = 5
                    Case 32
                        gMNID = 6
                End Select
            End If
        Catch ex As Exception

        End Try

    End Sub


Private Sub Detail_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Try

            gVALIDATETEXT = "a-záâàãéêèíîìóôòõúûùçA-ZÁÂÀÃÉÊÈÍÎÌÓÔÒÕÚÛÙÇ .,;:/+\?!0-9<>_=&-"
            gVALIDATETEXT = gVALIDATETEXT.Replace("a-z", "")
            gVALIDATETEXT = gVALIDATETEXT.Replace("A-Z", "")
            gVALIDATETEXT = gVALIDATETEXT.Replace("0-9", "")

        Catch ex As Exception
            gText = System.Reflection.MethodBase.GetCurrentMethod().Name & " Erro: " & Me.Page.ToString & " " & ex.Message
            Add2LogFile(glogpath, gText)
        End Try
    End Sub




    Private Sub Add_Controls(ByVal bOper As String)


'this bit of code is inside a loop that goes through some metadata, creates and adds controls to a div 
        Dim oCmb As New DropDownList
        Dim oTextBox As New TextBox
        Dim gSqlCMB As New SqlDataSource
        Dim sValue as String

        oCmb = New DropDownList
        oCmb.ID = 'something dynamic

        gSQL = "select c,t from table" 'the query is different for each dropdownlist
        gSqlCMB.SelectCommand = gSQL
        oCmb.DataSource = gSqlCMB
        oCmb.DataValueField = "C"
        oCmb.DataTextField = "T"
        oCmb.SelectedValue = sValue '"1", "2", "3"....
        oCmb.DataBind()
        template_edit.controls.Add(oCmb)
4

0 回答 0