0

拡張可能な GridView の templateField 内にボタンがあり、ボタンが押されたときに、同じテンプレート フィールド内のテキスト ボックスの内容をデータベースに保存し、テキスト ボックス内のテキストを再度表示する必要があります。

何かのようなもの:

textBox にテキストを入力 -> 保存 -> TextBox から DB にテキストを送信 -> TextBox に保存されたテキストを表示

拡張可能なグリッドビューを定義するために使用しているタグ コードは次のとおりです。

<script language="javascript" type="text/javascript">
    function divexpandcollapse(divname) {
        var div = document.getElementById(divname);
        var img = document.getElementById('img' + divname);
        if (div.style.display == "none") {
            div.style.display = "block"; img.src = "Images/Icons/minus.jpg";
        } else { div.style.display = "none"; img.src = "Images/Icons/plus.jpg"; }
    }</script>

        <asp:GridView ID="GV_SL" runat="server" OnRowDataBound="gvUserInfo_RowDataBound"
             DataSourceID="SQL" >
            <%-- Style="font-size: x-small"   AllowPaging="True" --%>
            <Columns>
                <asp:TemplateField ItemStyle-Width="50px">
                    <ItemTemplate>
                        <a href="JavaScript:divexpandcollapse('div<%# Eval("ID") %>');">
                            <img id="imgdiv<%# Eval("ID") %>" width="15px" border="0" src="Images/Icons/plus.jpg" /></a></ItemTemplate>
                    <ItemStyle Width="40px" />
                </asp:TemplateField>
                <asp:BoundField DataField="Value" HeaderText="Value" SortExpression="Value">
                    <ItemStyle HorizontalAlign="Left" Font-Bold="True" />
                </asp:BoundField>

                <asp:TemplateField>
                    <ItemTemplate>
                        <tr>
                            <td colspan="100%">
                                <div id="div<%# Eval("reporting_group") %>" style="display: none; position: relative;
                                    left: 15px; overflow: auto">
                                    <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false"  />

                                        <Columns>

                                            <asp:BoundField DataField="Value2" HeaderText="Value2" HeaderStyle-HorizontalAlign="Left"
                                                DataFormatString="{0:N0}" />
                                        </Columns>
                                    </asp:GridView>
                                    <br />
                                    <asp:TextBox ID="TB_Comments" runat="server" Text="Example: Text will be entered here"
                                        TextMode="MultiLine" Rows="4" Width="510px"></asp:TextBox>
                                    <asp:Button ID="B_Save" runat="server" CommandName="AddText" 
                                     CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"   Text="Save Changes" />
                                </div>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

現在、次の 2 つの問題があります。

  1. itemtemplate 内のボタンを押すたびに、展開された行が折りたたまれます
  2. ボタンを押すとイベントを作成できません。

テストメッセージをラベルとテキストボックスにロードして、2番目のポイントで次のコードを試しましたが、何もしないようです:

Protected Sub GV_SL_RowCommand(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
    If (e.CommandName = "AddText") Then
        ' Retrieve the row index stored in the CommandArgument property.
        Dim index As Integer = Convert.ToInt32(e.CommandArgument)

        ' Retrieve the row that contains the button 
        ' from the Rows collection.
        Dim row As GridViewRow = GV_SL.Rows(index)
        Label1.Text = index & " - test"
        ' Add code here to add the item to the shopping cart.

        Dim TB_Com_Control As System.Web.UI.WebControls.TextBox = DirectCast(row.FindControl("TB_Comments"), System.Web.UI.WebControls.TextBox)
        TB_Com_Control.Text = "Test "

    End If
End Sub

何か案は?

ありがとう

4

1 に答える 1

0

2つの問題を解決することができました

1.アイテムテンプレート内のボタンを押すたびに、展開された行が折りたたまれます

AJAX更新パネルを追加することでこれを解決しました

<asp:UpdatePanel ID="UP_Text" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TB_Comments" runat="server" Text="Example: Text will be entered here"
TextMode="MultiLine" Rows="4" Width="510px"></asp:TextBox>
<asp:Button ID="B_Save" runat="server" CommandName="AddText" 
CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"   Text="Save Changes" />
</ContentTemplate>
</asp:UpdatePanel>

2.ボタンを押すとイベントを作成できません。

OnRowCommand="GV_SL_RowCommand" を追加してこれを解決しました

    <asp:GridView ID="GV_SL" runat="server" OnRowDataBound="gvUserInfo_RowDataBound"
         DataSourceID="SQL" OnRowCommand="GV_SL_RowCommand" >

それが役に立てば幸い

于 2013-09-26T07:49:45.563 に答える