2009-11-17 10 views
5

मेरे पास वास्तव में अजीब स्थिति है। मैंने नया एएसपीएक्स पेज बनाया है, और बिना किसी कस्टम लॉजिक ऑब्जेक्ट्स (विज़ुअल स्टूडियो विज़ार्ड के साथ बनाई गई सभी चीज़ों) का उपयोग किए बिना sqldatasource से ग्रिड व्यू बनाने की कोशिश की है।खाली ग्रिडव्यू हालांकि sqldatasource के मान

डेटा संग्रहित प्रक्रिया से आता है, जिसमें एकल पैरामीटर होता है जिसमें डिफ़ॉल्ट मान होता है। जब मैं स्कीमा को रीफ्रेश करता हूं या "परीक्षण क्वेरी" पर क्लिक करता हूं, तो मुझे परिणाम पंक्तियां दिखाई देती हैं और ग्रिड व्यू फ़ील्ड को मूल रूप से बनाया जाता है। लेकिन जब मैं पृष्ठ चलाता हूं तो कोई ग्रिड व्यू नहीं होता है (यह बस खाली है - जब मैं एम्प्टीडाटा टेम्पलेट जोड़ता हूं तो यह दिखाया जाता है)। मैंने कस्टम (खाली) फ़ंक्शन और डेटाबिंड, डेटाबिंडेड और रोक्रेटेड इवेंट जोड़ा है, और केवल डाटाबेस और डाटावाउंड ईवेंट निकाल दिए गए हैं (हालांकि, जैसा कि मैंने लिखा था - संग्रहीत प्रक्रिया इसके डिफ़ॉल्ट पैरामीटर रिटर्न पंक्तियों और .net उन्हें डिज़ाइन मोड में पढ़ सकती है)

प्रक्रिया में कुछ भी "फैंसी" नहीं है, मैंने इसे बिना किसी समस्या के एक बार किया है। मैं अपने उत्पादन env में एक और संग्रहीत प्रक्रिया जो काम करता है की कोशिश की है और अभी भी वही emty gridview

यहाँ

मिला कोड

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TEST.aspx.cs" Inherits="site.TEST" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" 
      AllowSorting="True" OnDataBinding="GridView1_DataBinding" OnDataBound="GridView1_DataBound" 
      OnRowCreated="GridView1_RowCreated"> 
      <EmptyDataTemplate> 
       No Data Available 
      </EmptyDataTemplate> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" 
      SelectCommand="myStoredProcedure" SelectCommandType="StoredProcedure"> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="val1" Name="par1" Type="String" /> 
       <asp:Parameter Name="val2" Type="Int32" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 
    </div> 
    </form> 
</body> 
</html> 

और codebehind

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 

namespace site 
{ 
    public partial class TEST : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     {//brake here 

     } 

     protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
     {//brake here 

     } 

     protected void GridView1_DataBinding(object sender, EventArgs e) 
     {//brake here 

     } 

     protected void GridView1_DataBound(object sender, EventArgs e) 
     {//brake here 

     } 
    } 
} 

उत्तर

13

अपने हाल की टिप्पणियों में यह लगता है जैसे कि एसक्यूएल प्रोफाइलर किसी भी गतिविधि नहीं दिखा रहा है जब SelectCommandSqlDataSource से जारी किया जाता है से साथ चयन को अंजाम देखने के लिए एसक्यूएल सर्वर प्रोफाइलर की कोशिश करो। यह इस तथ्य के कारण हो सकता है कि ConvertEmptyStringToNullSelectParameters संग्रह में निहित पैरामीटर्स पर डिफ़ॉल्ट रूप से सत्य पर सेट किया गया है। साथ ही, डिफ़ॉल्ट रूप से, SqlDataSource पर CancelSelectOnNullParameter सत्य पर सेट है। इसका मतलब है कि आपका 'val2' पैरामीटर शायद एक नल मान गुजर रहा है, जो बदले में डेटा पुनर्प्राप्ति ऑपरेशन रद्द कर देता है। यही कारण है कि आप एसक्यूएल प्रोफाइलर के भीतर कोई गतिविधि नहीं देखते हैं।

SqlDataSource पर झूठी पर CancelSelectOnNullParameter सेट करने का प्रयास करें।

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:myConnectionString %>" SelectCommand="myStoredProcedure"SelectCommandType="StoredProcedure" CancelSelectOnNullParameter="False"> </asp:SqlDataSource>

+1

आप कल्पना नहीं कर सकते कि मैं कितना आभारी हूं :) – SimSimY

+0

+1 आपने मुझे बस कुछ घंटे बचाया! :) – meda

+1

धन्यवाद। 6 साल बाद, आपने मेरी मदद की :-) यह सुनिश्चित नहीं है कि एमएस गलत तरीके से गड़बड़ करने के लिए क्यों करता है। –

0

मुझे नजर नहीं आता है पैरामीटर का असाइनमेंट (val1, val2), इसलिए डिफ़ॉल्ट लॉन्च स्ट्रिंग और int के लिए डिफ़ॉल्ट असाइन करेगा और SQL सर्वर को पास करेगा।

अगर आप असली मापदंडों

+0

Paramters passas हैं उन्हें करना चाहिए (प्रथम और कोई मूल्य नहीं पर डिफ़ॉल्ट मान के साथ ((संग्रहीत प्रक्रिया में ही) ऐसा लगता है कि वहाँ डीबी से कोई संबंध नहीं है की तरह में डिफ़ॉल्ट मान है प्रोफाइलर ने बैचस्टार्टिंग इवेंट नहीं दिखाया, लेकिन जब मैंने मैनगामैनेट स्टूडियो से प्रक्रिया को निष्पादित किया - यह दिखाया गया) – SimSimY

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