2008-10-08 19 views
5

मेरे पास पंक्ति-चयन लिंक के साथ एएसपीनेट 2.0 में एक ग्रिड व्यू है। जब कोई पंक्ति चयनित होती है, तो मैं एक और ग्रिड एट अल घोंसला करने के लिए, चयनित पंक्ति के नीचे प्रोग्राम तालिका में एक तालिका पंक्ति जोड़ना चाहता हूं।एक ग्रिड व्यू में प्रोग्रामेटिक रूप से पंक्ति कैसे डालें?

मैं एक ग्राहक के लिए और एक लेख के लिए इस शोध कर रहा हूँ, और मुझे लगता है कि मेरी गूगल फू मजबूत आज रात नहीं है। कोई सुझाव?

संपादित करें: मैं वास्तव में एक काम कर समाधान था, लेकिन दृश्य स्टूडियो किसी भी तरह ऊपर nutted किया गया था; समापन और फिर से खोलने वी.एस. और पुनर्निर्माण सब कुछ समस्या ;-)

मेरे समाधान नीचे पोस्ट किया जाता है तय, कृपया मुझे बताओ कैसे बेहतर यदि संभव हो तो बनाने के लिए। धन्यवाद!

उत्तर

8

मुझे लगता है कि मैंने इसे समझ लिया। यहां एक समाधान है जो काम करता प्रतीत होता है। यह उपयोगकर्ता नियंत्रण का उपयोग में सुधार हो सकता है, लेकिन यह यह का सार है:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow && 
     (e.Row.RowState & DataControlRowState.Selected) > 0) 
    { 
     Table tbl = (Table)e.Row.Parent; 
     GridViewRow tr = new GridViewRow(e.Row.RowIndex + 1, -1, 
      DataControlRowType.EmptyDataRow, DataControlRowState.Normal); 
     TableCell tc = new TableCell(); 
     tc.ColumnSpan = GridView1.Columns.Count; 
     tc.Controls.Add(
      makeChildGrid(Convert.ToInt32(
       ((DataRowView)e.Row.DataItem)["ROW_ID_FIELD"]))); 
     tr.Cells.Add(tc); 
     tbl.Rows.Add(tr); 
    } 
} 

protected GridView makeChildGrid(int id) 
{ 
    GridView gv = new GridView(); 
    SqlDataSource sqlds = new SqlDataSource(); 
    sqlds.DataSourceMode = SqlDataSourceMode.DataSet; 
    sqlds.ConnectionString = SqlDataSource1.ConnectionString; 
    sqlds.SelectCommand = "SELECT * from MY_TABLE_NAME " + 
     "WHERE KEY_FIELD = " + id.ToString(); 
    DataView dv = (DataView)sqlds.Select(DataSourceSelectArguments.Empty); 
    gv.DataSource = dv; 
    gv.DataBind(); //not sure this is necessary...? 
    return gv; 
} 
1

इस कोड को बांटने के लिए धन्यवाद।

मैं एक ही बात (नेस्टेड gridview बनाने) करने के लिए कोशिश कर रहा हूँ, लेकिन वास्तव में, आप अपने आप को gridview बनाने के लिए नहीं है। इसके बजाय, आप केवल टैग के भीतर नियंत्रण लपेट सकते हैं। मैंने यहां एक उदाहरण देखा है http://www.codeproject.com/KB/aspnet/EditNestedGridView.aspx?msg=3089755#xx3089755xx

आप देखेंगे कि डेवलपर ने टैग के भीतर दूसरे ग्रिडव्यू नियंत्रण को लपेटकर जीवी नियंत्रण को घोंसला दिया है।

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

मैं vb और पूरी तरह से काम करने के लिए अपने कोड परिवर्तित कर दिया है।

धन्यवाद

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