2011-01-26 38 views
2

DataTableを別の関数に移動して以来、次のエラーが発生しています。DataSourceとDataSourceIDの両方がlistviewで定義されていますが、1つのソースを削除します

Both DataSource and DataSourceID are defined on 'TestView'. Remove one definition. 

是非ともスタイル/規格に関するヒントをお持ちでしたら、私もそれを歓迎します。私はaspxコーディングには非常に新しいです。これを引き起こす原因は何ですか?それはそれがそれ自身の機能ではなかった前に起こっていなかった。それはローカル変数の問題ですか?ここで

は結合して、エラーで強調表示されたコードのためのコードです:

public DataTable GetTestTable() 
{ 
    DataTable testTable = new DataTable("TestView"); 
    testTable.Columns.Add("testdata", typeof(String)); 
    testTable.Columns.Add("user", typeof(String)); 
    testTable.Columns.Add("date", typeof(String)); 
    DataRow arow = testTable.NewRow(); 
    arow["testdata"] = "test data"; 
    arow["user"] = "System"; 
    arow["date"] = ""; 
    testTable.Rows.Add(arow); 
    return testTable; 
} 

リストビューのaspxファイル内:ここ

testDAO tda = new testDAO(); 
DataTable testTable = new DataTable("TestView"); 
testTable = tda.GetTestTable(); 
TestView.DataSource = testTable; 
TestView.DataBind(); 

GetTestTable()のコードだ

<asp:ListView ID="TestView" runat="server"> 
       <ItemTemplate> 
        <tr id="row" runat="server" class='<%# Container.DataItemIndex % 2 == 0 ? "row" : "altrow" %>'> 
         <td align="left"> 
          <%# Eval("testdata") %> 
         </td> 
         <td align="center"> 
          <%# Eval("user") %> 
         </td> 
         <td align="center"> 
          <%# Eval("date") %> 
         </td> 
        </tr> 
       </ItemTemplate> 
       <LayoutTemplate> 
        <table class="system"> 
         <tr> 
          <th> 
           Test Data 
          </th> 
          <th> 
           User 
          </th> 
          <th> 
           Date 
          </th> 
         </tr> 
         <tr id="itemPlaceholder" runat="server" /> 
        </table> 
       </LayoutTemplate> 
      </asp:ListView> 

答えて

2

私はいくつかのネーミングの競合にその原因があなたのDataTable名のいずれかの名前を変更してくださいだと思いますまたはListView IDをTestListViewのようなものに置き換えます。あなたはまだ、その後、いくつかの問題を抱えている場合は、いくつかの割り当てるかもしれない他にどこの表は、メソッドGetTestTable

編集

から返さ割り当てているとしても、あなたが新しいDataTableを作成するための余分なラインを持っているがredundencyのthatsこのように気にいらを行い、その後、いくつかのデータソースが提供するにDataSourceIDを設定することで、データ・ソース:

TestView.DataSourceID = null; 
testDAO tda = new testDAO(); 
DataTable testTable = tda.GetTestTable(); 
TestView.DataSource = testTable; 
TestView.DataBind(); 

nullにDataSourceIDを設定することは間違いなく、問題を解決します。..

+0

私は自分の答えを更新しました –

+0

ええ、問題はnullを修正しました。しかし、私の本当の問題は、Visual Studioがファイルを保存していないことでした。私はsaveを押し続けましたが、まだ古いファイルをロードしていましたが、DataSourceIDがaspxファイルで定義されていました。私の編集者がそれを示していなかったので、気づかなかった。そして、エラーは、aspx.csファイルを強調表示していた。 VSは時々本当に愚かです。 – Dexter

+1

笑somtimesすべての;-)で起こる喜んで私は助けることができる.. :-) –

1

idこれにこれを書き換えます

testDAO tda = new testDAO(); 
TestView.DataSource = tda.GetTestTable(); 
TestView.DataBind(); 

、それはそれを行う必要があります - データテーブルを作成し、tda.GetTestTable(からそれにデータテーブルを割り当てる必要がtheresの)

+0

これは意味がありましたが、試しましたが、それでもやはり正確なエラーが出ていて、変更されたコードが強調表示されています。それはまだDataBind()行を強調表示しています。 – Dexter

関連する問題