2010-03-05 10 views
9

मैं सी # में एक शेयरपॉइंट वेब भाग बना रहा हूं और इसका एक हिस्सा पेज पर ग्रिड व्यू नियंत्रण आउटपुट करता है। जबकि मैं ग्रिड व्यू के सीएसएस वर्ग को सेट करके प्रदर्शित होने के तरीके पर काफी व्यापक नियंत्रण प्राप्त कर सकता हूं, मैं वास्तव में कुछ विशिष्ट टीडी तत्वों को कक्षा निर्दिष्ट करने में सक्षम हूं। मुझे यकीन नहीं है कि ऐसा करने के बारे में कैसे जाना है, या यदि यह तब किया जाएगा जब ग्रिड व्यू पंक्तियों के साथ पॉप्युलेट किया जा रहा है, या उस समय ग्रिड व्यू को पृष्ठ में जोड़ा गया है।मैं ग्रिड व्यू में विशिष्ट पंक्तियों के लिए सीएसएस कक्षाओं को कैसे निर्दिष्ट करूं?

छद्म कोड में, जो मैंने अनिवार्य रूप से कल्पना की थी, वह gridView.Row[4].CssClass = "header" जैसा कुछ कहने में सक्षम था, जो ग्रिड व्यू में पांचवीं पंक्ति का टीडी "हेडर" श्रेणी में सेट करेगा।

मैं, RowDataBound घटना का उपयोग करते हुए देखा है तो मैं बस का इस्तेमाल किया यह परीक्षण करने के लिए निम्नलिखित:

protected void outputGrid1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.CssClass = "outputHeader"; 
} 

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

उत्तर

17

मैं RowDataBound के साथ इसी तरह कुछ करना: कि तुम क्या कर रहे सही है ब्राउज़र के माध्यम से अपने html आउटपुट की निगरानी करने के लिए है की जाँच करने के

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    // Check the XXXX column - if empty, the YYYY needs highlighting! 
    if (e.Row.Cells[6].Text == " ") 
    { 
     e.Row.CssClass = "highlightRow"; // ...so highlight it 
    } 
} 

एक तरह से ... Firebug की तरह कुछ वास्तव में मदद करता है।

कुछ नमूने यहां सीएसएस, जहां हम ग्रिड को CssClass 'डेटा ग्रिड' आवंटित है:

/* Used to highlight rows */ 
table.dataGrid tr.highlightRow td 
{ 
    background-color: #FF6666; 
    border-bottom: 1px solid #C0C0FF; 
} 

अद्यतन: यह सब ऊपर तारों: मैं aspx पेज पर स्वत: तार-अप का उपयोग करें। आपका पृष्ठ घोषणा कुछ इस तरह दिखती है:

<%@ Page Language="C#" MasterPageFile="~/XXXXXX.master" AutoEventWireup="true" CodeBehind="YYYY.aspx.cs" Inherits="ZZZ.ZZZ.AAAAAA" Title="View Blah" %> 

पृष्ठ पर यह सेटिंग आपको ईवेंट को जोड़ने के लिए यूआई का उपयोग करने की अनुमति देती है। ग्रिड पर क्लिक करें, गुणों का चयन करें, बिजली-स्ट्राइक आइकन पर क्लिक करें, और RowDataBound ईवेंट के तहत, अपनी विधि का चयन करें।

 <asp:GridView ID="uiActionGridView" runat="server" AllowSorting="True" AutoGenerateColumns="False" 
     OnRowDataBound="uiActionGridView_RowDataBound" OnDataBound="uiActionGridView_DataBound"> 
  • इस दो घटनाओं जा रहा तार-अप, databound और RowDataBound घटनाओं से पता चलता: यह सब पर्दे के पीछे करता DataGridView करने के लिए एक विशेषता जोड़ने के लिए, इस प्रकार है।

मैं वीएस2005 का उपयोग करके यही करता हूं और यह सब 'बस काम' लगता है। एकमात्र चीज जो मुझे लगता है कि आप अनुभव कर रहे हैं यह है कि डेटाबेस के बाद आप ईवेंट मैन्युअल रूप से बाध्य कर रहे हैं।

+0

मुझे यह दृष्टिकोण पसंद है। हालांकि, डीबगर में कोड के माध्यम से कदम उठाने में, मुझे लगता है कि मेरे रोडाडाबाउंड को नहीं कहा जा रहा है। मैंने इसे ठीक से लिखा है क्योंकि यह प्रश्न में है, और मेरे ग्रिड को आउटपुट ग्रिड 1 कहा जाता है। क्या आपको कोई विचार है कि वह RowDataBound क्यों नहीं बुलाएगा? –

+0

मुझे करने के लिए केवल एक ही अतिरिक्त चीज़ को मेरी ग्रिड व्यू की रोडाटाबाउंड संपत्ति को RowDataBound विधि पर सेट किया गया था, जैसे: outputGrid1.RowDataBound + = outputGrid1_RowDataBound; आपकी सहायताके लिए धन्यवाद! –

+0

@ जीओ आई: कृपया ऊपर अपडेट देखें। यदि आप समस्याओं का सामना करना जारी रखते हैं तो शायद अपना कोड पोस्ट करें – Nij

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