2011-08-15 46 views
0

我在我的aspx頁面有一箇中繼器。這將爲不同類型的呼叫的更改數據源,因此我不能做中繼器綁定@ serverside

<ItemTemplate> 
      <tr > 
     <td bgcolor="" valign="top"> 
        <%#DataBinder.Eval(Container.DataItem, "Id")%> 
       </td> 

...

的DataItem的會有所不同。這是做服務器端的最佳方式?

感謝,

+0

只要您當前的數據源具有Id屬性,是不是沒問題? –

+0

是的,它會有一個ID,但其他列是不同的。 – user626309

+0

DataField會不同嗎?如下所示,這次可能是PersonID,下一個ProductID? –

回答

0

就個人而言,最好的辦法將是創建界面,寫每一個類型的適配器。在中繼器中,你只能使用這個接口工作。

+0

我想你是對的,但我只是想,如果我能以更簡單直接的方式做到這一點,因爲我只有一天的時間來完成並測試它。 – user626309

+0

但這種方式將是最容易的。如果您需要在每個數據源中只綁定一個具有相同名稱的字段的邏輯,那麼<%#Eval(「ID」)%>實際上可以工作......但是如果出現更復雜的不同名稱或更多的字段,則需要綁定一個字段。 ..你只是會花更多的時間在bug修復和所有如果/切換解決。感謝你的時間,讓編譯器檢查所​​有的錯誤;) – IceN

+0

我也有一些jscript $(document).ready(function()which which need the repeater id or else it will fail the build。 – user626309

0

你可以做

<asp:Label ID="lable1" runat="server" ondatabinding="label1_ondatabinding" /> 

和手工填寫在事件處理程序的數據。

protected void label1_ondatabinding(object sender, EventArgs e) 
{ 
    ((Label)sender).Text = ... 
} 
+0

Thanks,but I do not需要做ondatabinding,但可能onload,什麼是函數簽名,我如何創建項目模板? – user626309