2009-12-04 15 views
17

पर लिंक कॉलम जोड़ना मैं क्लिक करने योग्य समाचार शीर्षकों की एक सूची आउटपुट करना चाहता हूं। अब तक मैं इसे हेडलाइंस की एक सूची मुद्रित करने के लिए प्राप्त कर सकता हूं क्योंकि मैंने वीएस 2010 में डिज़ाइनर व्यू में न्यूजहेडलाइन तालिका को खींच लिया और गिरा दिया। आपको कैसे लगता है कि मुझे सूची तत्वों को क्लिक करने योग्य बनाना चाहिए? मैंने एक यूआरएल विशेषता की तलाश की लेकिन मुझे यह नहीं देखा। क्या मुझे < ए href में लपेटने की ज़रूरत है?एएसपी.NET ग्रिड व्यू

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="SqlDataSource1" 
     EmptyDataText="There are no data records to display."> 
     <Columns> 
      <asp:BoundField DataField="NewsHeadline" HeaderText="NewsHeadline" 
       SortExpression="NewsHeadline" /> 
     </Columns> 
    </asp:GridView> 

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>" 
     SelectCommand="SELECT [NewsHeadline] FROM [NewsTable]"></asp:SqlDataSource> 
    </form> 

उत्तर

28

आपको कॉलम प्रकार को बाउंडकॉलम से हाइपरलिंक कॉलम में बदलने की आवश्यकता है।

<asp:hyperlinkfield headertext="NewsHeadline" 
     datatextfield="NewsHeadline" 
     datanavigateurlfield="NewsURL" 
     datanavigateurlformatstring="http://{0}" /> 

यह परिवर्तन करने के अलावा, आप सुनिश्चित करें कि आप यूआरएल या कुछ और आप समाचार लेख के लिए लिंक बनाने के लिए उपयोग कर सकते हैं का चयन कर रहे बनाने की आवश्यकता होगी। उपर्युक्त उदाहरण में, मुझे लगता है कि यूआरएल कुछ ऐसा है जो आप अपने एसक्यूएल स्रोत से प्राप्त कर सकते हैं। यदि यह एक आईडी है, तो बस इस तरह के यूआरएल को टाइप करें ... "~/MyNewsPage.aspx? NewsID = {0}" ...

+2

मुझे डेटाNavigateUrlFields का उपयोग करना था कि एक .NET 4 चीज है? –

3

आपको बाउंडफ़िल्ल्ड के बजाय हाइपरलिंक फ़ील्ड का उपयोग करने की आवश्यकता है है, तो जैसे:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" 
    EmptyDataText="There are no data records to display."> 
    <Columns> 
     <asp:HyperLinkField HeaderText="NewsHeadline" SortExpression="NewsHeadline" DataTextField="NewsHeadline" NavigateUrl="..." /> 
    </Columns> 

9

उपयोग hyperlinkfield बजाय:

<asp:hyperlinkfield datatextfield="NewsHeadline" 
     datanavigateurlfields="NewsID" 
     datanavigateurlformatstring="~\newsdetails.aspx?Id={0}" /> 
+0

साफ समाधान .. – dincerm

2

HyperLinkField महान काम के रूप में अन्य लोगों ने बताया होगा। लेकिन, यदि आप पूरी पंक्ति क्लिक करने योग्य चाहते हैं, तो आप कस्टम सर्वर नियंत्रण का उपयोग कर सकते हैं जो एसओ पोस्ट "Making an entire row clickable in a gridview" में सुझाए गए ग्रिड व्यू को लागू करता है।

इसे लागू करने पर how to implement a C# custom server control पर पोस्ट किए गए प्रश्न को देखें।

बस एक और विकल्प।

3

कुछ इस तरह दृश्य स्टूडियो में एक समाधान के रूप शानदार काम करेंगे 2010.

  1. बनाम में अपने वेबपेज के डिजाइनर टैब में एक GridView बनाएं
  2. GridView पर अपने माउस को घुमाएं और ऊपरी दाएं भाग में दिखाई देने वाले तीर पर क्लिक करें।
  3. "डेटा स्रोत चुनें" पर जाएं और "नया डेटा स्रोत ..."
  4. अपने डेटाबेस में कनेक्शन स्ट्रिंग बनाएं और न्यूजहेडलाइन तालिका चुनें।
  5. प्रश्न लिखें SELECT News_Id, NewsHeadline FROM NewsHeadline
  6. सेटअप समाप्त करें। अब स्रोत टैब में कुछ कोड उत्पन्न होना चाहिए। यह SqlDataSource भी बनाएगा जो अब आपके GridView के DataSource है।
  7. स्रोत टैब में कोड GridView के लिए कोड कहां है और निम्न कोड के साथ प्रतिस्थापित करें।

कोड:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="Id" DataSourceID="SqlDataSource1"> 
    <Columns> 
    <asp:HyperLinkField 
      DataNavigateUrlFields="News_Id" 
      DataNavigateUrlFormatString="~\newsdetails.aspx?News_Id={0}" 
      DataTextField="NewsHeadline" 
      HeaderText="News HeadLines" 
      SortExpression="NewsHeadline" /> 
    </Columns> 
</asp:GridView> 

और आप पूरी तरह तैयार हैं।यह News_Id का उपयोग करके बनाए गए क्वेरी स्ट्रिंग के newsdetails.aspx पृष्ठ प्रशंसा के गतिशील रूप से जेनरेट किए गए अद्वितीय लिंक के साथ सभी शीर्षकों की एक सूची बनाएगा, जो न्यूज़हेडलाइन तालिका में प्रत्येक NewsHeadline प्रविष्टि के अनुरूप है।

फिर जब आप newsdetails.aspx पृष्ठ लोड आप का उपयोग करें: Request.QueryString["News_Id"] URL से News_Id मूल्य मिलता है और विशिष्ट NewsHeadline के बारे में जानकारी है कि क्लिक किया गया था डेटाबेस क्वेरी करने के लिए इसका इस्तेमाल करने की। फिर आप उस क्वेरी का परिणाम वेबपृष्ठ पर प्रदर्शित कर सकते हैं।

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