2013-04-22 9 views
15

मुझे कुछ कॉलम के लिए विलय पंक्तियों के साथ ग्रिड व्यू में डेटा प्रदर्शित करने की आवश्यकता है। कृपया मेरी मदद करो एक ग्रिड दृश्य तैयार करने के लिए नीचे परिभाषित प्रारूप में: enter image description hereमर्ज किए गए कक्षों के साथ ग्रिड व्यू

और मूल डेटा डेटाबेस से आता है में प्रारूप नीचे: enter image description here

कृपया मुझे गतिशील रूप से इस कार्य को करने के लिए सबसे अच्छा तरीका खोजने के लिए मदद और कुशलतापूर्वक।

+0

अपने कोड .. –

उत्तर

18

आपको RowSpan का उपयोग करना होगा।

इसके लिए निम्नलिखित कोड देखें:

protected void GridView1_DataBound1(object sender, EventArgs e) 
{ 
    for (int rowIndex = GridView1.Rows.Count - 2; 
            rowIndex >= 0; rowIndex--) 
    { 
    GridViewRow gvRow = GridView1.Rows[rowIndex]; 
    GridViewRow gvPreviousRow = GridView1.Rows[rowIndex + 1]; 
    for (int cellCount = 0; cellCount < gvRow.Cells.Count; 
                cellCount++) 
    { 
    if (gvRow.Cells[cellCount].Text == 
          gvPreviousRow.Cells[cellCount].Text) 
    { 
     if (gvPreviousRow.Cells[cellCount].RowSpan < 2) 
     { 
     gvRow.Cells[cellCount].RowSpan = 2; 
     } 
     else 
     { 
     gvRow.Cells[cellCount].RowSpan = 
      gvPreviousRow.Cells[cellCount].RowSpan + 1; 
     } 
     gvPreviousRow.Cells[cellCount].Visible = false; 
    } 
    } 
} 

सन्दर्भ:

https://sites.google.com/site/learning6329/asp-net/gridview-merge-cells

सचित्र उदाहरण के रूप में प्रश्न में:

http://marss.co.ua/MergingCellsInGridView.aspx

+0

आपकी मदद के लिए धन्यवाद दिखाएँ लिखा forloop भीतर एक और "forloop" का उपयोग कर सकते हैं, इस कोड को वास्तव में काम करता है मेरी आवश्यकता के अनुसार। – himanshu

+0

हमेशा स्वागत है। – Freelancer

+0

मुझे एक और बात पूछने की ज़रूरत है, क्या इस सेल को ग्रिड व्यू के सभी कॉलम के लिए ठीक कॉलम के लिए विलय करने का कोई तरीका नहीं है। उदाहरण के लिए, जैसा कि मैंने अपनी नमूना तालिका में प्रश्न में प्रदान किया है, क्या हम किसी भी प्रतिबंध को लागू करेंगे ताकि सेल विलय टिप्पणी क्षेत्र कॉलम पर लागू नहीं होगा। – himanshu

1

पहले कॉलम के पंक्ति-कक्षों को मर्ज करने का सबसे आसान तरीका नीचे जैसा है। कृपया ध्यान दें कि लूप के लिए हमेशा विपरीत में पुनरावृत्त किया जाना है।

protected void GridView1_DataBound(object sender, EventArgs e) 
    { 
     int RowSpan = 2; 
     for (int i = GridView1.Rows.Count-2; i >=0 ;i--) 
     { 
      GridViewRow currRow = GridView1.Rows[i]; 
      GridViewRow prevRow = GridView1.Rows[i+1]; 
      if (currRow.Cells[0].Text == prevRow.Cells[0].Text) 
      { 
       currRow.Cells[0].RowSpan = RowSpan; 
       prevRow.Cells[0].Visible = false; 
       RowSpan += 1; 
      } 
      else 
       RowSpan = 2; 
     } 
    } 

आप इसी तरह से सभी स्तंभों के पंक्ति कोशिकाओं मर्ज करना चाहते हैं, तो आप बाहरी ऊपर

+0

यह समाधान मेरे लिए बिल्कुल सही काम करता है, क्योंकि पहले पंक्तियों के लिए 3 पंक्तियां 1 में विलीन हो जाती हैं –

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