私はこのようなASPxGridViewのチェックボックス持っASPxGridViewないウォーキングでCheckBox.Checkedを取得:適切
<dxwgv:ASPxGridView ID="Grid_Loading_Plan_Detail" runat="server" >
...
<dxwgv:GridViewDataColumn Caption="#" VisibleIndex="1">
<DataItemTemplate>
<dxe:ASPxCheckBox ID="loadingStatus" runat="server" Checked='<%# GetChecked(Eval("loadingStatus").ToString()) %>'></dxe:ASPxCheckBox>
</DataItemTemplate>
</dxwgv:GridViewDataColumn>
...
</dxwgv:ASPxGridView>
をチェックボックスがロードされたときにそれがうまく結合し、ここでの機能:
Public Function GetChecked(value As String) As Boolean
Select Case value
Case "1"
Return True
Case "0"
Return False
Case Else
Return False
End Select
End Function
問題は、ありますchecked
のステータスをチェックすると、常にロードされた値が返されます。初めてロードされたときにステータスがchecked
である場合、unchecked
CheckBoxを実行すると、まだchecked
が返されます。ここで私は値を取得し、それをデータベースに保存する方法:
Protected Sub btSimpan_Click(sender As Object, e As EventArgs) Handles btSimpan.Click
Try
sqlstring = ""
For i As Integer = 0 To Grid_Loading_Plan_Detail.VisibleRowCount - 1
Dim loadingStatus As DevExpress.Web.ASPxEditors.ASPxCheckBox = Grid_Loading_Plan_Detail.FindRowCellTemplateControl(i, Grid_Loading_Plan_Detail.Columns(1), "loadingStatus")
sqlstring = sqlstring & " UPDATE containerTransaction SET loadingStatus = '" & IIf(loadingStatus.Checked, "1", "0") & "' " & _
" WHERE ID = '" & Grid_Loading_Plan_Detail.GetRowValues(i, "ID") & "'; "
Next
If SQLExecuteNonQuery(sqlstring) > 0 Then
Response.Redirect("loading-plan.aspx")
End If
Catch ex As Exception
Response.Write("Error btSimpan_Click <BR> " & ex.ToString)
End Try
End Sub
ADDED
ここで私はデータをバインドする方法:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
If Not Page.IsPostBack Then
Call Load_menu()
End If
Catch ex As Exception
Response.Write("Page_Load Exception :<br>" & ex.ToString)
End Try
If Not Session("Grid_Loading_Plan_Detail") Is Nothing Then
Grid_Loading_Plan_Detail.DataSource = CType(Session("Grid_Loading_Plan_Detail"), DataTable)
Grid_Loading_Plan_Detail.DataBind()
End If
End Sub
そして、ここでLoad_menu()
機能:
Private Sub Load_menu()
Try
sqlstring = "SELECT ID, code, date, container, seal, sender, receiver, [weight], loadingStatus " & _
"FROM containerTransaction " & _
"WHERE loadingCode = (SELECT TOP 1 code FROM loadingPlan WHERE ID = '" & ID & "') AND [status] = 1 " & _
"ORDER BY [weight] "
DS = SQLExecuteQuery(sqlstring)
DT = DS.Tables(0)
Session("Grid_Loading_Plan_Detail") = DT
Grid_Loading_Plan_Detail.DataSource = DT
Grid_Loading_Plan_Detail.KeyFieldName = "ID"
Grid_Loading_Plan_Detail.DataBind()
Catch ex As Exception
Response.Write("Load_Menu Exception :<br>" & ex.ToString)
End Try
End Sub
私がここで逃したものは何ですか?どんな援助も可能です。ありがとうございました。セッションが利用可能な場合
GridViewにデータをバインドする方法と時期はいつですか?データバインディングを 'IsPostBack'チェックの中にラップしなかった場合、チェックボックスの状態はPostBackが発生するたびにデータベース値によって上書きされます。 – VDWWD
loadStatusをパラメータとして使用してチェックされた関数を呼び出しているので、チェックされたりチェックが外されたりすると、読み込み中のパラメータでローディング関数が呼び出されます – MaCron
ケースを完全に理解しているかどうかはわかりませんが、 LoadPostData() 'がコードにありません。この行の直後に 'DevExpress.Web.ASPxEditors.ASPxCheckBox = ....'としてDim LoadingStatusを呼び出し、 'DirectCast(btSimpan、IPostBackDataHandler).LoadPostData(btSimpan.UniqueID、Request.Form) 'を呼び出してみてください。 btw私はVB.NETに実際にはないので、私はこの部分に私のC#スニペットを変換しました。 C#の元は '((IPostBackDataHandler)btSimpan).LoadPostData(btSimpan.UniqueID、Request.Form);'です。それが役に立てば幸い..もしそうなら、教えてください。私は明日の完全な回答を投稿します。幸運:) –