2011-03-28 11 views
7

इंफ्राजिस्टिक्स के लिए एक नौसिखिया हूँ। मेरे Winforms ऐप पर, डेटाबेस से डेटा प्रदर्शित करने के लिए Ultrawingrid का उपयोग कर रहा हूँ।इन्फ्राजिस्टिक्स में चेकबॉक्स कॉलम जीत अल्ट्राग्रिड

मैं ग्रिड में पहले कॉलम के रूप में चेकबॉक्स कॉलम कैसे दिखा सकता हूं? इसके अलावा, मुझे चेक/अनचेक ईवेंट कैप्चर करने की आवश्यकता है और फिर एप्लिकेशन में संबंधित ग्रिड पंक्ति/कक्ष पढ़ें।

क्या आप कृपया इस पर मेरी सहायता कर सकते हैं?

पढ़ने के लिए धन्यवाद।

+0

विधि InitializeComponent() के कोड पोस्ट करें। धन्यवाद। –

उत्तर

16

आपको उस कॉलम के लिए अल्ट्राग्रिड कॉलम उदाहरण प्राप्त करने की आवश्यकता है जिसे आप चेकबॉक्स के रूप में प्रस्तुत करना चाहते हैं। कुछ की तरह:

UltraGridColumn ugc = myGrid.DisplayLayout.Bands[0].Columns[@"myColumnKey"]; 

फिर चेकबॉक्स और बनाने के लिए स्तंभ के प्रदर्शन शैली बदलने यकीन है कि यह संपादन की अनुमति देता है:

ugc.Style = ColumnStyle.CheckBox; 
ugc.CellActivation = Activation.AllowEdit; 

मेरी राय में, यह प्रपत्र के लिए एक हैंडलर में इस ग्रिड प्रवर्तन कोड के लिए उपयुक्त है लोड घटना या ग्रिड की आरंभिक तिथि घटना।

ग्रिड के CellChange घटना संभाल देखने के लिए उपयोगकर्ता चेकबॉक्स मूल्य बदल जाता है जब:

private void mygrid_CellChange(object sender, CellEventArgs e) 
{ 
    if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Column.Key, @"myColumnKey")) 
    { 
     // do something special when the checkbox value is changed 
    } 
} 

के रूप में अनुरोध किया है, यहाँ नमूना कोड है कि एक अबाध स्तंभ जोड़ने, वाम-पंथी स्थिति में ले जाकर दर्शाता है, सेल से निपटने है घटना बदलें, और ग्रिड से अतिरिक्त मूल्य पुनर्प्राप्त करें।

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=tempdb;Trusted_Connection=true")) 
     { 
      DataSet ds = new DataSet(); 
      SqlDataAdapter da = new SqlDataAdapter("select * from sysobjects", conn); 
      conn.Open(); 
      da.Fill(ds); 
      ultraGrid1.DataSource = ds; 
     } 
    } 

    private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) 
    { 
     UltraGridColumn checkColumn = e.Layout.Bands[0].Columns.Add(@"checkColumnKey", @"caption"); 
     checkColumn.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; 
     checkColumn.CellActivation = Activation.AllowEdit; 
     checkColumn.Header.VisiblePosition = 0; 
    } 

    private void ultraGrid1_CellChange(object sender, CellEventArgs e) 
    { 
     if (!StringComparer.Ordinal.Equals(e.Cell.Column.Key, @"checkColumnKey")) 
     { 
      return; 
     } 

     bool checkedState = bool.Parse(e.Cell.Text); 

     DataRowView row = e.Cell.Row.ListObject as DataRowView; 
     string name = row.Row[@"name"] as string; 

     MessageBox.Show(string.Format("Checked={0}, name={1}", checkedState, e.Cell.Row.ListObject)); 
    } 
} 
+0

धन्यवाद एक टन पॉलफ, लेकिन मुझे इस चेकबॉक्स कॉलम को एक अनबाउंड के रूप में जोड़ने की ज़रूरत है। और मुझे इसे सभी डीबी कॉलम से पहले ग्रिड में पहला कॉलम दिखाने की ज़रूरत है.अब यह अंतिम कॉलम के रूप में दिखाई दे रहा है। साथ ही, जब मैं चेकबॉक्स पर क्लिक करता हूं, तो इसे अनुमति देने के लिए सेल एक्टिवेशन सेट करने के बाद भी चेक नहीं किया जा रहा है। कृपया मदद करें। – Jimmy

+0

@ जिमी - नमूना कोड जोड़ा गया। सौभाग्य! – PaulF

+0

हाय जिमी। अद्भुत जवाब के लिए धन्यवाद। मेरे पास एक विस्तार के रूप में एक सवाल था। सुविधा के लिए, मैं डेटा कॉलम में डेटा प्रकारों के साथ अपने कॉलम जोड़ रहा हूं। और ultragrid करने के लिए डेटा जोड़ने योग्य हूँ। वैसे भी मैं तालिका के लिए CellChange घटना कॉन्फ़िगर कर सकते हैं? –

2

क्यों यकीन है कि आपका डेटा स्तर रिटर्न बूल, Infragistics ग्रिड स्वचालित रूप से (ऑटो उत्पन्न) के लिए चेक बॉक्स होगा नहीं यह

+0

मुझे एक ही समस्या है। इसे अपनी डेटा परत में जोड़ना गलत हो सकता है क्योंकि कुछ फ़ील्ड केवल यूआई चिंता हैं और आपको हमेशा सावधान रहना चाहिए कि आप अपने यूआई और डेटा लेयर कोड को बहुत ज्यादा न मिलाएं। –

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