拡張可能な 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 つの問題があります。
- itemtemplate 内のボタンを押すたびに、展開された行が折りたたまれます
- ボタンを押すとイベントを作成できません。
テストメッセージをラベルとテキストボックスにロードして、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
何か案は?
ありがとう