Asp.net

ASP.NET 將整數綁定到 CheckBox 的 Checked 欄位

  • August 21, 2013

我有一個以下 ListView 項目模板,我在其中嘗試將整數值綁定到CheckedCheckBox 的屬性。

IsUploadedvalue 只包含 0 和 1…

<asp:ListView ID="trustListView" runat="server">
   <ItemTemplate>
       <asp:CheckBox ID="isUploadedCheckBox" runat="server"
           Checked='<%# Bind("IsUploaded") %>' />
   </ItemTemplate>
</asp:ListView>

但是 ASP.NET 抱怨說

異常詳細資訊:System.InvalidCastException:指定轉換無效

儘管使用以下程式碼DataBinder.Eval()有效, 但
我需要有 2 路綁定,因此需要使用Bind().

<asp:CheckBox ID="isUploadedCheckBox2" runat="server"
   Checked='<%# Convert.ToBoolean(
       DataBinder.Eval(Container.DataItem, "IsUploaded"))) %>' />

如何使用 0 和 1 將布爾值轉換為布爾值Bind()


$$ ANSWER $$ 我通過添加賈斯汀的答案中提到的新屬性,通過部分類擴展了自動生成的類型

如果您願意更改類,請在類上添加一個布爾屬性

public bool IsUploadedBoolean
{
  get { return IsUploaded != 0; }
  set { IsUploaded = value ? 1 : 0; }
}

如果沒有,您可能會成功使用 TypeConverter:

  1. 創建一個自定義TypeConverter,它將處理 0 和 1 到布爾轉換
  2. 將TypeConverterAttribute粘貼在 IsUploaded 屬性上,以將 .NET 定向到您的自定義類型轉換器。

向您的類添加一個進行轉換的屬性怎麼樣?

public bool IsUploadedBool
{
 get { return IsUploaded == 1; }
}

然後綁定到這個IsUploadedBool屬性,而不是直接綁定到底層的 INT。

馬克

引用自:https://stackoverflow.com/questions/1561382