2017-01-13 3 views
0

データベースに保存されているイメージのサムネイルを収集した自動補完検索ボックスがあります。問題は、画像名がオートコンプリート検索ボックスに表示されるたびに.jpg拡張子が表示されることです。とにかく.jpg拡張子が表示されないようにこれらのコードを変更することはできますか?以下は、javascriptとashxを使用して私の既存のコードです。 ありがとうございます!ファイル拡張子のないデータベース格納イメージの検索結果を表示

ASPX:

<script src="scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script src="scripts/jquery.autocomplete.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#<%=txtSearch.ClientID%>").autocomplete("Search.ashx", { 
       width: 200, 
       formatItem: function (data, i, n, value) { 
        return "<img style = 'width:50px;height:50px' src= 'Images/" + value.split(",")[1] + "'/> " + value.split(",")[0]; 
       }, 
       formatResult: function (data, value) { 
        return value.split(",")[0]; 
       } 
      }); 
     }); 
</script> 

<style type="text/css"> 
    .Gridview { 
     font-family: Verdana; 
     font-size: 10pt; 
     font-weight: normal; 
     color: black; 
    } 
</style> 
</head> 
    <body> 
     <form id="form1" runat="server"> 
      <div> 
       Search here: 
     <asp:TextBox ID="txtSearch" runat="server" /> 
       <br /> 
      </div> 

      <div> 
       <asp:FileUpload ID="fileuploadimages" runat="server" /> 
       <br /> 
       <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> 
      </div> 
      <div> 
      </div> 
      <asp:Label ID="lblResult" runat="server"></asp:Label> 
     </form> 
    </body> 
</html> 

ASHX:

public class Search : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string searchText = context.Request.QueryString["q"]; 
     string strcon = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString; 
     SqlConnection connection = new SqlConnection(strcon); 
     connection.Open(); 
     SqlCommand cmd = new SqlCommand("select ID,ImageName,ImagePath from ImagesPath where ImageName Like @Search + '%'", connection); 
     cmd.Parameters.AddWithValue("@Search", searchText); 
     StringBuilder sb = new StringBuilder(); 
     using (SqlDataReader dr = cmd.ExecuteReader()) 
     { 
      while (dr.Read()) 
      { 
       sb.Append(string.Format("{0},{1}{2}", dr["ImageName"], dr["ImageName"], Environment.NewLine)); 
      } 
     } 
     connection.Close(); 
     context.Response.Write(sb.ToString()); 
    } 
    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

答えて

0

はどちらかASHX

dr["ImageName"].ToString().Replace(".jpg", ""); 

またはデータベースで、検索を行うと置き換える

select ID, REPLACE(ImageName, '.jpg', '') AS ImageName, ImagePath from ImagesPath 

それとも、複数の拡張子を持っている場合、あなたはまた、これはすべてのファイルの拡張子を除外し、この

Path.GetFileNameWithoutExtension(dr["ImageName"].ToString()) 

を行うことができ、そしてパスはそれが存在しなければならない:

string file = @"c:\folder\testFile.jpg"; 
string result = Path.GetFileNameWithoutExtension(file); 

//result: testFile 

に翻訳あなたのスニペットは、このようなものに見えます。

while (dr.Read()) 
{ 
    string file = Path.GetFileNameWithoutExtension(dr["ImageName"].ToString()); 
    sb.Append(string.Format("{0},{1}{2}", file, file, Environment.NewLine)); 
} 
+0

ありがとうVDWWD最初のオプションが機能しました。しかし、.jpg、.png、.gifなどの複数の拡張機能の場合、イメージはデータベースに格納されているとみなしてGetFileNameWithoutExtensionを実装するにはどうすればよいですか? –

+0

私の答えをあなたのスニペットにあわせて更新しました。 – VDWWD

+0

VDWWDのアップデートをありがとう。ここでも、「パス」に「パスは現在のコンテキストに存在しません」というメッセージが下線付きで表示されます。 –

関連する問題