2012-04-28 16 views
1

こんにちは私は、チェックボックスを持つ列を持つデータグリッドを持っています。私は特定の条件でチェックボックスを無効にしたいと思います。私はそれからデータセットを取得し、データグリッド内のデータセットを埋めるSQL DBを持っています。ここにいくつかのコードがありますDataGridのセルからデータを取得する方法

Dim loopRow As Integer = ds.Tables(0).Rows.Count - 1 
     Dim ColDS As New DataColumn("Status") 
     ds.Tables(0).Columns.Add(ColDS) 
     For loopval As Integer = 0 To loopRow 
      If ds.Tables(0).Rows(loopval)(8).ToString = "True" Then 
       ds.Tables(0).Rows(loopval)(11) = "Confirmed" 
      Else 
       ds.Tables(0).Rows(loopval)(11) = "Pending" 
      End If 
     Next 
     For loopDate As Integer = 0 To ds.Tables(0).Rows.Count - 1 
      If ds.Tables(0).Rows(loopDate)("ProgramTours_FromDate") <= Now.Date Then 

      End If 
     Next 
     GrdAgentBL.DataSource = ds 
     GrdAgentBL.DataBind() 
+0

条件はツアーからであるがより働くこと日付が現在の日付より小さい場合は、データグリッド内のチェックボックスにチェックが入っている確認済みの列が無効になります。条件を満たしている場合は、その列が無効になっている必要があります。 – amrswalha

答えて

1

私はこれがあなたの質問の解決策だと思います。

//I am setting dataTable using this function 
Private Sub setDataTable() 
     Dim dt As DataTable 
     dt = New DataTable() 
     dt.Columns.Add("Name") 
     dt.Columns.Add("Val") 
     Dim dr As DataRow = dt.NewRow() 
     dr("Name") = "Abcd" 
     dr("Val") = 1 
     dt.Rows.Add(dr) 
     dr = dt.NewRow() 
     dr("Name") = "xyz" 
     dr("Val") = 2 
     dt.Rows.Add(dr) 
     grdView.AutoGenerateColumns = False 
     grdView.DataSource = dt 
     grdView.DataBind() 

    End Sub 

// This code will do enabling or disabling the checkbox. 
if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      DataRowView grdRow = (DataRowView)e.Row.DataItem; 
      if (grdRow.Row.ItemArray[1].ToString() == "1") 
      { 
       e.Row.Enabled = false; 
      } 

     } 

のベストプラクティス:SQLからあなたのDataTableを形成してください。単純なケースを使用し、コード内でこのループを除外します。 1000行があるかもしれないのであれば、uは1000

select val1,val2,(case when val1=0 then 1 else 0 end) as val3 from tbl. 

を反復処理する必要があるので、これは速く任意の反復

+0

これは良い回答ですが、私は別の1つを提供します – amrswalha

+0

ok brother。あなたが持っていたことを伝えたいと思います。 – kbvishnu

+0

ここにコード – amrswalha

0

ここでコード

For Each Item As DataGridItem In GrdAgentBL.Items 'load the items first 
       Dim lblTemp As New Label 'My Data is stored in a label 
       lblTemp = Item.Cells(2).Controls(1) 'So I take it inside that new label 
       Dim tx As String = lblTemp.Text 'Then I load it on the Tx var 
       If tx <= Now.Date Then 'if it's meet the condition we will disable the column 
        Item.Cells(11).Enabled = False 
       End If 
Next 
+0

があります。この値を比較してdbからbool値を得ることができないのはなぜですか?今日の日付を返すGetdate()などの関数があります。したがって、条件に基づいてグリッドを有効または無効にすることができます。 – kbvishnu

+0

答えに感謝します。これらの行がいつ実行されるかはわかりません。 – kbvishnu

+0

私はrawdataboundとあなたのメソッドを使うことの違いは何ですか? – kbvishnu

関連する問題