2017-07-06 9 views
0

SelectedValue='<%# Bind("AccID") %>'AccIDがアイテムのリストにない場合、バインドを実行しないようにするにはどうすればよいですか?アイテムのリストに選択した値が見つからない場合は、ドロップダウンリストを表示しない

<EditItemTemplate> 
    <asp:ObjectDataSource ID="ObjectDataSourceAccount" runat="server" SelectMethod="GetUsableAccountByUser" 
    TypeName="t_MT_AccCode" OnSelected="ObjectDataSourceAccount_Selected" OnSelecting="ObjectDataSourceAccount_Selecting"> 
     <SelectParameters> 
      <asp:Parameter Name="companyCode" /> 
      <asp:Parameter Name="departmentCode" /> 
      <asp:Parameter Name="badgeNumber" /> 
      <asp:Parameter Name="userRole" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 
    <asp:DropDownList ID="DropDownListAccount" runat="server" DataSourceID="ObjectDataSourceAccount" 
    DataTextField="accountDesc" DataValueField="id" 
    SelectedValue='<%# Bind("AccID") %>' 
    ondatabinding="DropDownListAccount_DataBinding" 
    ondatabound="DropDownListAccount_DataBound"> 
    </asp:DropDownList> 
</EditItemTemplate> 
+0

これは 'Bind(" AccID ")!= nullですか?バインド(「AccID」):「[デフォルト値を追加する]」。 "0" – Prabhat

+0

@Prabhat 'AccID'はnullではありませんが、' 123'でもかまいませんが、項目のリストには 'ABC'と' DEF'しかありません。この場合、エラーが発生します。 – Pop

+0

"** AccID **"がアイテムのリストに存在しない場合、nullは "_Object reference_"エラーを処理するためのものです。 – Prabhat

答えて

0

これは私がこの問題を解決した方法です。

しかし、代わりにSelectedValue='<%# Bind("AccID") %>'で解決できると思っていました。

protected void DropDownListAccount_DataBound(object sender, EventArgs e) 
{ 
    DropDownList dropDownListAccount = (DropDownList)sender; 
    DataRowView currentDataRowView = (DataRowView)((GridViewRow)dropDownListAccount.Parent.Parent).DataItem; 
    int currentRowDataKeyItemId = int.Parse(currentDataRowView["ID"].ToString()); 
    int accountId = t_MT_MTItem.GetAccountIdByItemId(currentRowDataKeyItemId); 
    dropDownListAccount.SelectedValue = accountId.ToString(); 
} 
関連する問題