GridViewを設定しました:
<asp:GridView id="GridView1" Runat="server" AutoGenerateColumns="False" OnRowCommand = "GridView1_RowCommand" EnableViewState="true">
<Columns>
<asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center">
<ItemTemplate><asp:Button runat="server" ID="Delete" ImageUrl="~/images/Close.gif" CommandName="DeleteRow" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"/></ItemTemplate></asp:TemplateField>
<asp:TemplateField HeaderText="Comment" ItemStyle-Width="175px">
<ItemTemplate><textarea class="raTextBox" id="txtItemComment" rows="4" cols="30"></textarea></ItemTemplate></asp:TemplateField>
</Columns>
</asp:GridView>
コードビハインドのRowCommandは、次のように設定されます。
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
If (e.CommandName = "DeleteRow") Then
//do stuff here
GridViewは、次のようにページロードでデータバインドされます。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Session("CalledModule") = "RCMT0021"
Else
With ViewState
_intRepor = CInt(.Item("Report"))
End With
End If
DataBind() //Gridview Load
End Sub
私の質問:
- 行コマンドイベントが発生することはありません。ページはPage_LoadのELSE(Not is Postback)に入るだけです
- 各行の[コメント]列(TEXTAREA)に入力された内容をすべて追跡し、[変更を保存](フォーム)ボタンをクリックしたときにデータをデータベースに保存するにはどうすればよいですか?
ありがとう!
更新:Grid-Viewのデータバインディングは次のとおりです。
Public Sub DataBind()
Dim clsDatabase As New clsDatabase
Dim cmd As New OleDbCommand()
Try
cmd.CommandText = "SELECT A, B FROM WHERE C = ? ORDER BY A"
Dim report As New OleDbParameter("@Report", _intReportNumber)
cmd.Parameters.Add(report)
cmd.Connection = clsDatabase.Open_DB()
Dim dReader As OleDbDataReader
dReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim dt As New DataTable
dt.Columns.Add(New DataColumn("PictureURL", GetType(String)))
dt.Columns.Add(New DataColumn("Seq", GetType(Int16)))
dt.Columns.Add(New DataColumn("ReportNumber", GetType(String)))
Do While (dReader.Read())
Dim dr As DataRow = dt.NewRow()
_strComments = dReader(0).ToString
dr("Seq") = dReader.GetInt16(1)
dr("PictureURL") = "GetImages.aspx?report=" + _intReportNumber.ToString + "&seq=" + dReader.GetInt16(1).ToString
dr("ReportNumber") = _intReportNumber.ToString
dt.Rows.Add(dr)
Loop
GridView1.DataSource = dt
GridView1.DataBind()
Catch err As Exception
End Try
End Sub
したがって、基本的に、GridViewには、コメントフィールド、画像フィールド、およびデータベースから画像(および存在する場合はコメント)を削除するための削除ボタン(画像)のあるフィールドの3つの表示列があります。4番目の列は非表示の列で、画像の画像IDを追跡します。わかりやすくするために、写真やその他の列は含めませんでした。
- ユーザーはコメントを追加でき、[変更を保存]ボタンをクリックすると、対応するコメントが画像に保存されます。
- 'SELECT IMAGE'は、ユーザーが画像を選択できるようにするModalDialogBoxを開きます。閉じると、ポストバックが発生し、グリッドビューが再バインドされて、ユーザーが選択したばかりの画像が表示されます。したがって、ポストバックで再バインドするためのGridView、またはこれを回避する方法が必要です。
- ( gridviewの)画像の削除ボタンは、データベースから画像とコメントを削除する必要があります。
再度、感謝します!