0

私はテレリックの ajax コントロールを試してきましたが、これまでのところ、大きな問題は発生していません。私は編集機能を備えた ajax radgrid を使用しています。彼らの提案の 1 つは、特定のグリッド レコードを編集するために、プログラムでコントロールを埋め込んだ Web フォーム ユーザー コントロール (.ascx) を使用することです。

Web フォームを問題なく開くことができ、コード ビハインドに次のコントロールを入力することもできます。

  • テキストボックス
  • ラベル
  • ドロップダウンリスト

グリッドについては、編集機能をテストしてきました。レコードを編集するには、適切に編集するために 3 つのドロップダウンリストが必要です。ここから問題が始まります。

コントロールの追加の間にブレークポイントを置き、次の手順を実行すると、特定のメタデータ条件に一致する場合にレコードを追加する関数があります。

  • コントロールの最初の「行」を追加します (ラベルとテキストボックス)
  • コントロールの 2 番目の「行」を追加します (ラベルとドロップダウンリスト)

    ここで停止して関数を終了するためにステップインすると、次のことが起こります。両方のラベルには正しいテキストとテキストボックスがありますが、選択したインデックスの値を「2」に設定し、クイックウォッチでそれを設定しても、ドロップダウンリストはそれほど多くありません2 のままで、Web フォームが表示されるとデフォルト値が「0」にリセットされます

  • コントロールの 3 番目の「行」を追加します (ラベルとドロップダウンリスト)

    ここで停止して関数の最後に進むと、クイックウォッチではすべて問題ありませんが、Web フォームが表示/ロードされると、両方のドロップダウン リストの内部に同じ値が含まれ、両方とも selectedindex = 0 になります。

編集:私が期待している動作について説明します:

  1. たとえば、「なし、A、B、C、D、E、F、G」で埋められ、選択された項目として「A」を持つ最初のドロップダウン(1)
  2. たとえば、「None、F1、F2、F3、F4、F5、F6」で満たされ、選択されたアイテムとして「F3」を持つ2番目のドロップダウン(2)

これは私が得ている動作です:

Web フォームがロードされると、ドロップダウン (1) とドロップダウン (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