“DataSource 和 DataSourceID 均已定義”錯誤使用 ASP.NET GridView
“DataSource 和 DataSourceID 都在 ‘grdCommunication’ 上定義。刪除一個定義。”
我今天剛收到此錯誤,程式碼一直有效,直到今天下午我將最新版本發佈到我們的伺服器,它在本地和伺服器上都因該錯誤而中斷。我不使用“DataSourceID”,應用程序將數據庫查詢讀入數據表並將數據表設置為 GridViews 上的數據源。我在 Visual Studio 中進行了搜尋,搜尋了整個解決方案,字元串“DataSourceID”甚至沒有出現在整個解決方案的 1 行程式碼中。這是讓我感到害怕的第一件事。
我認為它昨天一直在工作,所以我將程式碼恢復到昨天的建構。錯誤仍然存在。我一直在回溯建構,但問題仍然存在。我回去一個月了,我仍然遇到同樣的錯誤。這個應用程序今天早上執行良好?確實沒有程式碼更改,應用程序中的任何地方都沒有在任何網格視圖上設置 DataSourceID。有沒有人見過這樣的東西?
如果 DataSourceID 從未設置,我怎麼能得到那個錯誤……並且“DataSourceID”這個詞不在我的解決方案中?我只是在整個樹上做了一個wingrep,對datasourceid 進行了不區分大小寫的搜尋……完全沒有得到任何結果。這個詞在整個應用程序中絕對沒有。
<asp:GridView ID="grdCommunication" runat="server" Height="130px" Width="100%" AllowPaging="true" > ... standard grid view column setup here... </asp:GridView> // Code behind.. to set the datasource DataSet dsActivity = objCompany.GetActivityDetails(); grdCommunication.DataSource = dsActivity; grdCommunication.DataBind();// 更新:刪除了一些令人困惑的註釋。
試試這個:
DataSet dsActivity = objCompany.GetActivityDetails(); grdCommunication.DataSource = dsActivity.Tables[0]; grdCommunication.DataBind();
聖煙蝙蝠俠。表名已更改,導致我的數據源不好。但是在這種情況下,該錯誤消息沒有任何意義。因此,從技術上講,如果我按索引而不是按名稱呼叫表,則 tsilb 的解決方案將起作用,因此我會將他的解決方案標記為正確。
閱讀他的文章後,我嘗試了 dsActivity.Tables
$$ “Activities” $$而不是將數據集傳遞給數據源並將表名傳遞給數據成員,顯然這不起作用,但是如果我傳遞實際的索引,我不喜歡這樣做,因為該索引可能會改變,那麼它現在正在工作. 但搞砸的部分是那個錯誤。那個錯誤完全不符合問題所在。說我定義了兩者並刪除了一個,而實際上並非如此。另一個真正搞砸的事情是,表名只是改為全部大寫……但是,“活動”是與“活動”不同的鍵。