如何在asp.net ajax工具箱自动完成中从CSV中选择值并将该值传递给其他文本框

本文关键字:选择 值传 文本 其他 CSV net asp ajax 工具箱 | 更新日期: 2023-09-27 18:07:48

我已经使用Ajax工具包自动完成工作良好使用以下asp.net和c#代码。

 <asp:UpdatePanel ID="updPnlMedicineName" runat="server" >
  <ContentTemplate>
           Name<br />
               <asp:TextBox ID="txtMedName" runat="server" Width="150px" 
                   ontextchanged="txtMedName_TextChanged"></TextBox>
  <cc1:AutoCompleteExtender ID="txtSearchID_AutoCompleteExtender" runat="server"    DelimiterCharacters="" OnClientItemSelected="ItemSelected" Enabled="True" GetMedicine" ServicePath="Search/NameSearch.asmx" TargetControlID="txtMedName" MinimumPrefixLength="1">
 </cc1:AutoCompleteExtender>

My code Behind is:

[WebMethod]
public string[] GetMedicine(string prefixText)
{
 List<string> listString = new List<string>();
 using (SqlConnection con = new  SqlConnection(ConfigurationManager.ConnectionStrings["NewLandConnectionString"].ConnectionString))
{
 SqlCommand com = new SqlCommand("select ProductName+','+ProductCode+',' + (select unitName from Unit where Unit.Id=product1.UnitId) as ProductDetails,ProductId from product1 where ProductName like '"+prefixText+"%'", con);
 con.Open();
 SqlDataAdapter adr = new SqlDataAdapter(com);
 DataTable dt = new DataTable();
 adr.Fill(dt);
  for (int j = 0; j < dt.Rows.Count; j++)
        {
            string countProduct = dt.Rows[j]["ProductDetails"].ToString();
           listString.Add(AutoCompleteExtender.CreateAutoCompleteItem(dt.Rows[j]["ProductDetails"].ToString(),dt.Rows[j]["ProductId"].ToString()));
        }
  }
    string[] strarray = listString.ToArray();
    return strarray;
 }

现在,当我的自动补全工作时,我得到的值的形式是:某些名称,代码,单位但我想,如果一个值被选中,那么我必须只从CSV即"somename"的第一个值在该文本框和其他两个值(I。E code,unit)必须分别填充到其他文本框中。

请帮助我完成这项任务。

提前感谢!!

如何在asp.net ajax工具箱自动完成中从CSV中选择值并将该值传递给其他文本框

最后,在这个链接的帮助下,我自己得到了解决方案,希望这对其他人也有帮助。因此,我为上面的查询提供下面的代码:

OnClientItemSelected on the AutoCompleteExtender control run a javascript function
 <script type="text/javascript">
    function ItemSelected(sender, args) {
        __doPostBack(sender.get_element().name, "");
    }
</script>

现在文本框(自动扩展器)的文本更改:

 Put the below code on textchange event
    string obj = txtMedName.Text.ToString();//in this texbox you are getting your 
                  //values from autoextender and so store this value in to a string
    string[] nameList = obj.Split(','); //finally using split separate your CSV 
                                    //values and store in an array which you are 
                                    // getting on autoextender
    txtMedName.Text = nameList[0].ToString();//Now pass the values to respective 
                                             //texboxes
    txtBox2.Text = nameList[1].ToString();
    txtBox3.Text = nameList[2].ToString();