2011-02-26 49 views
2

我在UpdatePanel內部有以下數據綁定DataList,只要從DropDown菜單中進行選擇,就會更新它。
但是,如果沒有從數據庫表中檢索到任何東西,我會得到一個空白部分。DataList問題

我想什麼做的是顯示這是ItemTemplate內與文本一起同桌 - 即「管理未找到」,「電子郵件未找到」 ....等爲EmptyDataTempate ...
我我們注意到DataList中不存在EmptyDataTemplate,但我不想使用不同的控件。

有沒有辦法做到這一點?示例代碼讚賞。謝謝!

<asp:DataList ID="DataList" runat="server"> 
    <ItemTemplate> 
     <table> 
      <tr> 
       <td class="style1"> 
        Company Admin: 
       </td> 
       <td> 
        <asp:TextBox Text='<%# Eval("CompanyAdmin") %>' CssClass="input input1" ID="co_admin" 
         Width="150" runat="server" ReadOnly="True" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Admin Email: 
       </td> 
       <td> 
        <asp:TextBox Text='<%# Eval("AdminEmail") %>' CssClass="input input1" ID="ad_email" 
         Width="150" runat="server" ReadOnly="True" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Company Email: 
       </td> 
       <td> 
        <asp:TextBox Text='<%# Eval("CompanyEmail") %>' CssClass="input input1" ID="co_email" 
         Width="150" runat="server" ReadOnly="True" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Telephone: 
       </td> 
       <td> 
        <asp:TextBox Text='<%# Eval("Telephone") %>' CssClass="input input1" ID="telephone" 
         Width="150" runat="server" ReadOnly="True" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
       </td> 
       <td> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
</asp:DataList> 

回答

0

如果該字段爲空,則可以添加一個簡單函數以返回味精。

你叫喜歡

<%#GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a")%> 

功能例如

<asp:TextBox Text='<%# GetWithMsg(Container.DataItem, "CompanyEmail", "e-mail n/a") %>' CssClass="input input1" ID="co_email" 
        Width="150" runat="server" ReadOnly="True" /> 

和後面的代碼。

protected string GetWithMsg(object oItem, string cField, string TheMsg) 
{ 
    var TheData = DataBinder.Eval(oItem, cField); 

    if(TheData == null) 
     return TheMsg; 
    else 
     return TheData.ToString(); 
} 
+0

我嘗試添加你的代碼,它不是做出改變出於某種原因:(它仍然檢索值,但不顯示字符串爲空時什麼可能導致這種情況?我正在使用一個更新面板,所以當綁定發生時,我需要添加任何代碼在下拉列表中選擇的數據庫嗎? – user618616 2011-02-26 17:39:27

+0

@ user618616可能不是空的,但是是空的,檢查是否ToString ().Light == 0(也可以使用string.IsNullOrE mpty() – Aristos 2011-02-26 18:03:08

+0

嗯...仍然不顯示消息。 – user618616 2011-02-26 18:18:19

0

未經測試,但mybe你可以嘗試

'<%# !string.IsNullOrEmpty(Eval("CompanyEmail").ToString()) ? Eval("CompanyEmail") : "Email Not Found" %>' 

明確的強制類型轉換可能在性能方面優於EVAL雖然 例如

'<%# !string.IsNullOrEmpty(((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString()) ? ((System.Data.DataRowView)Container.DataItem)["CompanyEmail"].ToString() : "Email Not Found" %>' 

希望ITLL幫助

採樣編輯:

protected void BindData() 
{ 
    DataTable dt = DAL.GetData(... 
    if(dt.Rows.Count == 0) 
    { 
     dt.Rows.Add(dt.NewRow()); 
    } 
    DataList.DataSource = dt; 
    DataList.DataBind(); 
} 
+0

由於某種原因沒有任何工作......是否有任何其他方式可以考慮這樣做?提前致謝! – user618616 2011-02-26 19:26:18

+0

抱歉,沒有注意到這條語句「但是,如果沒有從db表中檢索到任何東西,我會得到一個空白段」,這意味着我們不綁定任何數據,只需在綁定前測試數據表並根據需要添加空行即可。 if(dt.Rows.Count == 0) {dt.Rows.Add(dt.NewRow());} – Adam 2011-02-27 15:14:20