2012-03-21 19 views
0

ドロップダウンリストのHostRoomTypeをバインドすると、上にある空白スペースにバインドされます。なぜこれが起こっているのかわかりません。私のコード:空白スペースもバインドします。ドロップダウンリストをバインドするとき

<div> 
       <fieldset> 
        <legend>Hostel Details </legend> 
        <asp:Label ID="LabelHostelRoomType" runat="server" Text="Room Type"></asp:Label> 
        <asp:DropDownList ID="DropDownListHostelRoom" runat="server" DataTextField="HTypeName" 
         DataValueField="_HRTypID" OnSelectedIndexChanged="DropDownListHostelRoom_SelectedIndexChanged"> 
        </asp:DropDownList> 
        <asp:GridView ID="GridViewHostelRoom" runat="server"> 
        </asp:GridView> 
       </fieldset> 
      </div> 

private void FillHostelRoomType() 
      { 
       SqlConnection cn = new SqlConnection(@"Data Source=.;Initial Catalog=_uniManagement;Integrated Security=True"); 
       string sqlDropdownHostelRoom = String.Format("SELECT [_HRTypID], [HTYPeNAME] FROM [_HOSTELS_Room_TYPE]"); 
       SqlCommand cmd = new SqlCommand(sqlDropdownHostelRoom); 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 
       DropDownListHostelRoom.DataSource = dt; 
       DropDownListHostelRoom.DataBind(); 
      } 



protected override void OnInit(EventArgs e) 
     { 
      DropDownListHostelRoom.AppendDataBoundItems = true; 
      DropDownListMemberType.AppendDataBoundItems = true; 
      FillHostelRoomType(); 
      FillHostelMember(); 
      base.OnInit(e); 
     } 

答えて

1

ほとんどの場合、ソースデータベースには空白があります。 SQLステートメントでは、フィールド名の前後にRTRIM()を使用して問題を解決できるはずです。

DB内のフィールドが指定された長さのCHARである可能性があります。その場合、空白がなくても、それを検索すると常にそのスペースが正確に得られます。そのため、SQL Serverは十分な余白を残して埋め込みます。例えば

、その中に"DAVID""DAVID "として返されるデータをCHAR(10)として定義されているフィールド(ダビデが10までの合計をもたらすために5つの空白を付加)

いずれかの方法で、RTRIMはすべき修理する。

string sqlDropdownHostelRoom = String.Format("SELECT [_HRTypID], RTRIM([HTYPeNAME]) AS HTYPeNAME FROM [_HOSTELS_Room_TYPE]"); 
+0

データベースに空きスペースがありません。 –

+1

RTRIMコマンドにショットを付けてください。数秒かかるだけで、動作するかどうか確認してください。もしそうでなければ、私はこれを削除します。 – David

+0

質問全体を誤って読んでいますか? – David

関連する問題