1

私はGridViewを持っています。テキストボックス、ドロップダウンリストなどのasp.netコントロールをGridview RowDataBoundイベントに動的に追加したいと考えています。ドロップダウンリストがあります。ドロップダウンリストからアイテムを選択すると、グリッドビューはその SelectedIndexChanged イベントに入力されます。RowDataBound イベントで GridView にコントロールを追加します。UpdatePanel を使用すると、Gridview はコントロールを塗りつぶしません。UpdatePanel を使用しなくても機能します。しかし、私は UpdatePanel を使用してそれをしたいです。私のグリッドビューコードは以下の通りです。

<asp:UpdatePanel ID="upSearchSPParameters" runat="server" UpdateMode="Conditional"
                        EnableViewState="true">
                        <ContentTemplate>
                            <asp:GridView ID="grdSPParameters" runat="server" AllowPaging="false" AllowSorting="false"
                                CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt"
                                ShowHeader="false" ShowFooter="false" AutoGenerateColumns="False" DataKeyNames="iID"
                                EmptyDataText="" GridLines="None" EnableViewState="true">
                                <Columns>
                                    <asp:TemplateField>
                                        <ItemTemplate>
                                            <asp:Label ID="lblLabelParameter" runat="server" Text='<%#Eval("cTag") %>'></asp:Label>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField>
                                        <ItemTemplate>

                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </ContentTemplate>
                     <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="ddlSearchReportName" EventName="SelectedIndexChanged"  />
                        </Triggers> 
                    </asp:UpdatePanel>

.cs ファイル コード:

Protected Sub grdSPParameters_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdSPParameters.RowDataBound
        Try
            If e.Row.RowType = DataControlRowType.DataRow Then
                Select Case e.Row.DataItem("cType").ToString.ToUpper
                    Case "TEXTBOX".ToUpper
                        Dim oTextbox As New TextBox
                        oTextbox.ID = "txtParam"
                        oTextbox.EnableViewState = True
                        e.Row.Cells(1).Controls.Add(oTextbox)
                    Case "COMBOBOX".ToUpper
                        Dim oDDL As New DropDownList
                        oDDL.ID = "ddlParam"

                        Dim oDs As New DataSet
                        oDs = oDAL.GetReportParameterQuery(e.Row.DataItem("cQuery").ToString)
                        oDDL.DataSource = oDs.Tables(0)
                        oDDL.DataTextField = "cName"
                        oDDL.DataValueField = "iID"
                        oDDL.DataBind()
                        e.Row.Cells(1).Controls.Add(oDDL)
                    Case "DATEPICKER".ToUpper
                        Dim oTxtDtPick As New TextBox
                        oTxtDtPick.ID = "txtParamPK"

                        Dim oSpan As New HtmlGenericControl
                        oSpan.InnerText = "(mm/dd/yyyy)"
                        oSpan.Attributes.Add("class", "")
                        oTxtDtPick.EnableViewState = True
                        oSpan.EnableViewState = True
                        e.Row.Cells(1).Controls.Add(oTxtDtPick)
                        e.Row.Cells(1).Controls.Add(oSpan)

                        Dim oTxt As New TextBox
                        oTxt = e.Row.FindControl(oTxtDtPick.ID)
                        oTxt.Attributes.Add("onclick", "cal1xx.select(document.forms[0]." + oTxt.ClientID + ",'" + oTxt.ClientID + "','MM/dd/yyyy'); return false;")

                    Case Else

                End Select
            End If
        Catch ex As Exception
            General.LogException(ex)
        End Try
    End Sub

私の目的は、グリッドビュー データバインドでグリッドビューにコントロールを動的に作成することです。

4

0 に答える 0