2017-08-28 5 views
8

मैं चेकबॉक्स है:इस तरह ASPxGridView में ASPxGridView नहीं Woking में 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 चेकबॉक्स करता हूं, तो यह अभी भी 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 

जोड़ा

यहाँ मैं डेटा कैसे बाँध:

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 

मुझे क्या याद आया? किसी भी मदद की सराहना की जाएगी। धन्यवाद।

+0

आप ग्रिड व्यू में डेटा को बाध्यकारी कैसे और कब कर रहे हैं? यदि आपने 'IsPostBack' चेक के अंदर डेटाबेस को लपेट नहीं किया है, तो चेकबॉक्स की स्थिति प्रत्येक बार जब भी पोस्टबैक होता है तो उनके डेटाबेस मानों द्वारा अधिलेखित किया जाएगा। – VDWWD

+0

आप अपने चेक किए गए फ़ंक्शन को लोडिंगस्टैटस के साथ पैरामीटर के रूप में भी कॉल कर रहे हैं, इसलिए जब भी इसे चेक किया जाता है या अनचेक किया जाता है तो यह लोडिंग फ़र्म को लोडिंग पैराम – MaCron

+0

के साथ कॉल करता है, वास्तव में यह सुनिश्चित नहीं है कि मैं इस मामले को पूरी तरह से समझता हूं लेकिन मुझे लगता है कि यह ' LoadPostData() 'आपके कोड में गायब है। 'डायरेक्टकास्ट (बीटीस्मान, आईपॉस्टबैकडाटा हैंडलर) को कॉल करने का प्रयास करें। लोडपोस्टडाटा (बीटीएसआईएमपीएन.एननिकिड, रिक्वेस्ट.फॉर्म)' इस लाइन के ठीक बाद 'डिम लोडिंगस्टैटस DevExpress.Web.ASPxEditors.ASPxCheckBox = ....' और देखें। बीटीडब्ल्यू मैं वास्तव में वीबी.नेट में नहीं हूं इसलिए मैंने अपने सी # स्निपेट को इस टुकड़े में परिवर्तित कर दिया। मूल में सी # है ((आईपीओस्टबैकडाटा हैंडलर) बीटीसिम्पैन) .लोडपोस्टडाटा (बीटीएसआईएमपीएन.एननिकिड, Request.Form); '। आशा करता हूँ की ये काम करेगा..यदि ऐसा है तो कृपया मुझे बताएं और मैं कल एक पूर्ण उत्तर पोस्ट करूंगा। शुभकामनाएँ :) –

उत्तर

2

मुझे क्षमा करें,

यह बाध्यकारी समस्या सत्र था, यह तो सत्र उपलब्ध है, तो डेटा स्रोत के साथ आबद्ध जाएगा जाँच की। कोड है:

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 

मुझे लगता है कि चर हटाने, और सब कुछ ठीक अब।

-EDIT-

यह खोज और अगर मैं सत्र चेकर हटाया छँटाई के लिए समस्या है। मेरे पास कुछ लेखों के माध्यम से खोज करने से नया समाधान है जो एएसपीएक्सग्रीड व्यू में अभी भी बेहतर और खोज/सॉर्टिंग सुविधा फिट बैठता है।

Private Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init 
    Call Load_menu() 
End Sub 

आप इस मामले के लिए सत्र चर निकाल सकते हैं:

इस मामले के लिए सबसे अच्छा तरीका कॉलिंग init में load_menu() समारोह है। अगर इस समाधान में कोई समस्या है, तो मुझे टिप्पणी में बताएं या एक नया उत्तर पोस्ट करें।

किसी भी मदद के लिए बहुत बहुत धन्यवाद।

संबंधित मुद्दे