2011-04-13 10 views
10

क्या आप आसानी से ग्रिड व्यू में केवल एक कॉलम को सही-संरेखित कर सकते हैं?.NET ग्रिड व्यू - क्या आप केवल एक कॉलम को सही-संरेखित कर सकते हैं?

मैं इस

<asp:GridView ID="GridView1" runat="server"></asp:GridView> 

यह एक DataTable (गतिशील रूप से उत्पन्न) है कि कई स्तंभ के लिए बाध्य है। मैं बस 'मूल्य' कॉलम को सही-गठबंधन करना चाहता हूं।

(इस समस्या को भर में आ रहा है, तो मैं HTML <table> को प्रिंट किया जाना चाहिए के बजाय एक GridView का उपयोग कर, मैं सोच रहा हूँ। HTML का उपयोग मैं कुल नियंत्रण होगा।)

+0

उपयोग है मूल्य कॉलम के लिए दाएं संरेखित टेम्पलेट फ़ील्ड। मुमकिन? – Shahin

उत्तर

19

हाँ, आप कर सकते हैं, लेकिन मैं लगता अगर आपके पास AutoGenerateColumns सत्य पर सेट है (जो डिफ़ॉल्ट रूप से है) तो आपको RowDataBound ईवेंट का उपयोग करके कॉलम को सही संरेखित करने की आवश्यकता है। एक साइड नोट के रूप में, यदि यह आसान है तो आप AutoGenerateColumns को झूठी पर सेट कर सकते हैं और BoundFields का उपयोग कर सकते हैं जो आपको अधिक प्रारूपण विकल्प देगा और शायद RowDataBound ईवेंट की आवश्यकता को खत्म कर देगा।

GridView:

<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" runat="server"></asp:GridView> 

codebehind:

protected void GridView1_RowDataBound(object o, GridViewRowEventArgs e) 
{ 
    //Assumes the Price column is at index 4 
    if(e.Row.RowType == DataControlRowType.DataRow) 
     e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Right; 
} 

आशा है कि मदद करता है।

+0

मैं देखता हूं ... हाँ, जैसा कि मैंने उम्मीद की थी कि यह बहुत सुंदर नहीं है। AutGenerateColumns कारण है कि मैं ग्रिड व्यू का उपयोग करता हूं। मैं AutGenerateColumns अक्षम के साथ ग्रिड व्यू का उपयोग करने से HTML को प्रिंट करना चाहता हूं। धन्यवाद!यह मेरे प्रश्न का उत्तर देता है :) – Aximili

+0

कूल, खुशी है कि आपके लिए काम किया! – rsbarro

12
<Columns> 
... 
    <asp:BoundField DataField="Price" HeaderText="Price" 
     ItemStyle-HorizontalAlign="Right" ItemStyle-Width="80" /> 
... 
</Columns> 
+1

यह कॉलम स्वरूपित करने के बजाय एक अतिरिक्त कॉलम जोड़ देगा जो मुझे – Aximili

+0

मार्कअप में इस तरह के कॉलम जोड़ें। जब तक आपके पास कोड-बैक में ऐसा करने के लिए कोई विशिष्ट कारण न हो? – IrishChieftain

+2

इस दृष्टिकोण का उपयोग करने के लिए आपको स्वत: जेनरेट कॉलम को गलत पर सेट करना होगा और मार्कअप में सभी कॉलम मैन्युअल रूप से जोड़ना होगा। नकारात्मकता टाइपिंग के बहुत सारे है। उलझन में आपको कोडबींड का सहारा लेने के बिना फ़ॉर्मेटिंग पर अधिक नियंत्रण मिलता है। व्यक्तिगत रूप से मुझे लगता है कि बाउंडफिल्ड्स का उपयोग करना एक बेहतर तरीका है। – rsbarro

0

मद में आइटम टेम्पलेट में आइटम को संलग्न करें और फिर div को स्टाइल सेट करें।

<ItemTemplate> 
<div id="divReportName"> 
<asp:Label ID="lblReport" runat="server" ></asp:Label> 
</div> 
</ItemTemplate> 

// css for div 
#divReportName { text-align: left;} 
0

आप Boundfield भीतर संरेखण ItemStyle- का उपयोग कर

इस तरह प्रदर्शन कर सकते हैं:

<asp:BoundField DataField="SOH" HeaderText="SOH" SortExpression="SOH" ItemStyle-HorizontalAlign="Right"/> 

यह मेरे लिए काम किया, जहां मैं अपने gridview में केवल विशिष्ट स्तंभ संरेखित करने के लिए आवश्यक

0

क्या आपने इसे GridView की पहली पंक्ति में जोड़ा था?

OnRowDataBound="GridView1_RowDataBound" 
1

भले ही प्रश्न बहुत पहले पोस्ट किया गया हो, यह इस पृष्ठ पर समाप्त होने वाले किसी व्यक्ति की सहायता कर सकता है।

दिए गए उत्तरों मानते हैं कि संरेखण की अनुक्रमणिका जिस पर संरेखण लागू किया जाएगा अग्रिम में जाना जाता है या कॉलम को .aspx पृष्ठ पर डिज़ाइन समय पर बनाया जाता है; पर यह मामला हमेशा नहीं होता।

किसी एक सामान्य समाधान जिसमें कॉलम ऑटो हैं की तलाश के लिए उत्पन्न और साथ शीर्ष लेख 'मूल्य' कॉलम अग्रिम में तो पता नहीं की सूचकांक, यहाँ एक समाधान

protected void grData_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     int i = ((DataTable)((GridView)sender).DataSource).Columns.IndexOf("Price"); 
     for (int j = 0; j < e.Row.Cells.Count; j++) 
     { 
      if (j == i) 
       e.Row.Cells[j].HorizontalAlign = HorizontalAlign.Right; 
      else 
       e.Row.Cells[j].HorizontalAlign = HorizontalAlign.Left; 
     } 
    } 
} 
संबंधित मुद्दे