台灣最大程式設計社群網站
線上人數
1255
 
會員總數:241126
討論主題:186798
歡迎您免費加入會員
討論區列表 >> C# >> C# textbox用autocomplete extender,有時working,有時不work
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# textbox用autocomplete extender,有時working,有時不work
價值 : 80 QP  點閱數:263 回應數:7

樓主

小芒
門外漢
0 1
44 4
發送站內信

C# VS2010,web form,targetFramework="4.0".
我用textbox綁AutoCompleteExtender,連資料庫的customer name,結果key字時,有時會working,有時不會,後來發現是沒觸發,完全沒邏輯,請問大家做出來的會這樣嗎?
資料連成功,autocomplete extender功用也出來了,但就是常常輸了字不動.

ASPX:
<asp:TextBox ID="tbx_Custom_DDLC" runat="server" width="70" AutoPostBack="True" />

<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="tbx_Custom_DDLC" MinimumPrefixLength="1"
ServiceMethod="GetCustName" ServicePath="~/AutoComplete.asmx" Enabled="True" CompletionInterval="500" UseContextKey="True" CompletionSetCount="20" EnableViewState="True">
</asp:AutoCompleteExtender>

AutoComplete.asmx:

<%@ WebService Language="C#" Class="AutoComplete" %>

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using MIS.Library; ---->這是我們自己連資料庫的!

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
[System.Web.Script.Services.ScriptService]

public class AutoComplete : System.Web.Services.WebService {

[WebMethod]
public string[] GetCustName(string prefixText, int count, string contextKey)
{
if (count == 0)
{
count = 10;
}

List<string> tmp = new List<string>(count);
tmp.Clear();

Random rnd = new Random();

DataTable dt = new DataTable();
dt = glmDBO_SalesRevenue.get_Custmer(contextKey, prefixText);

if (dt.Rows.Count == 0)
{
tmp.Add("Data not found");
}
else
{
for (int i = 1; i < count; i++)
{
tmp.Add(dt.Rows[i]["C_Name"].ToString());
}
}
tmp.Add("dt.Rows.Count=" + dt.Rows.Count.ToString());

return tmp.ToArray();
}

}







搜尋相關Tags的文章: [ textbox ] , [ autocomplete ] ,
本篇文章發表於2017-07-13 18:19
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

小芒
檢舉此回應
本想上傳圖ㄉ,舉例:打"三"時成功,但打"三星"就沒反應,單打"至"一個字時也一樣沒反應.
Sql: "select C_Name from [sal.Customer] where C_Name like '%" + prefixText + "%' order by a.C_Name";
本篇文章回覆於2017-07-13 18:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小芒
檢舉此回應
1.對了textbox有每輸入一個字就觸發一次的功能嗎?
2.還是用jQuery寫比較好用?
本篇文章回覆於2017-07-13 18:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
你試試打這樣 "'; Drop TABLE sal.Customer; --"
另外Text改變的事件TextBox.TextChanged事件
本篇文章回覆於2017-07-14 10:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

小芒
檢舉此回應
但是我為什麼要drop table,
TextBox.TextChanged==>不是只有在離開textbox時才會啟動,我目前要做像goole一樣下拉式自動完成的功能.
本篇文章回覆於2017-07-14 10:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
TextBox.TextChanged WindowsForm是Text每次變動都會觸發,至於ASP .Net沒試過
本篇文章回覆於2017-07-14 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

小芒
檢舉此回應
ㄚ~~~但我的是web form.
本篇文章回覆於2017-07-14 14:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

QZ_CHUNG
檢舉此回應
你的設定<asp:TextBox ID="tbx_Custom_DDLC" runat="server" width="70" AutoPostBack="True" />

加上TextBox.TextChanged 事件就會每打一個字就會觸發一次了,

不過我猜應該蠻慢的吧。
本篇文章回覆於2017-07-17 17:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.