Javascript GridView中自动完成用户控件的SelectedValue属性
首先,请原谅我的英语。我用Textbox和AutoCompleteXtender控件创建了一个用户控件,它运行良好。现在,我想反映我的文本框类似于下拉列表。当我将用户控件保存在GridView中并通过隐藏字段访问该值时,得到的是“0”值。如何读取页面中的隐藏字段值 UserControl.ascxJavascript GridView中自动完成用户控件的SelectedValue属性,javascript,asp.net,user-controls,Javascript,Asp.net,User Controls,首先,请原谅我的英语。我用Textbox和AutoCompleteXtender控件创建了一个用户控件,它运行良好。现在,我想反映我的文本框类似于下拉列表。当我将用户控件保存在GridView中并通过隐藏字段访问该值时,得到的是“0”值。如何读取页面中的隐藏字段值 UserControl.ascx <%@ Control Language="C#" AutoEventWireup="true" Code File="UserControl.ascx.cs" Inherits="Us
<%@ Control Language="C#" AutoEventWireup="true" Code File="UserControl.ascx.cs"
Inherits="UserControl" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<script type="text/java script">
function DispValue(sender, e) {
alert(e.get_value() + " : user control");
document.getElementById(hiddenFieldName.Client ID).value = e.get_value();
}
</script>
<asp:Hidden Field ID="hdnValue" runat="server" Value="0" />
<asp:Text Box ID="txtName" runat="server" Text=""> </asp:Text Box>
<cc1:AutoCompleteExtender ID="ACEName" TargetControlID="txtName" runat="server"
CompletionInterval="10" MinimumPrefixLength="1" Service Method="Get Name"
Service Path="UserControlWebServices.asmx" OnClientItemSelected="DispValue">
</cc1:AutoCompleteExtender>
<%@ Register Src="~/UserControl.ascx" TagPrefix="puc" TagName="UserControl" %> <head runat="server">
<title></title> </head> <body>
<form id="form1" runat="server">
<asp:Script Manager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:Script Manager>
<asp:Grid View ID="gvPatient" runat="server" AutoGenerateColumns="false" OnDataBound="GridPatient_DataBound">
<Columns>
<asp:Template Field>
<Header Template>
Patient Name
</Header Template>
<Item Template>
<puc:UserControl ID="pucPatient1" runat="server" />
</Item Template>
</asp:Template Field> </Columns>
</asp:Grid View>
<asp:Button ID="btnSave" runat="server" OnClick="Save" Text="Save" OnClientClick="return StartUpload();" />
</form>
</body>
</HTML>
MyAspxPage.aspx
<%@ Control Language="C#" AutoEventWireup="true" Code File="UserControl.ascx.cs"
Inherits="UserControl" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<script type="text/java script">
function DispValue(sender, e) {
alert(e.get_value() + " : user control");
document.getElementById(hiddenFieldName.Client ID).value = e.get_value();
}
</script>
<asp:Hidden Field ID="hdnValue" runat="server" Value="0" />
<asp:Text Box ID="txtName" runat="server" Text=""> </asp:Text Box>
<cc1:AutoCompleteExtender ID="ACEName" TargetControlID="txtName" runat="server"
CompletionInterval="10" MinimumPrefixLength="1" Service Method="Get Name"
Service Path="UserControlWebServices.asmx" OnClientItemSelected="DispValue">
</cc1:AutoCompleteExtender>
<%@ Register Src="~/UserControl.ascx" TagPrefix="puc" TagName="UserControl" %> <head runat="server">
<title></title> </head> <body>
<form id="form1" runat="server">
<asp:Script Manager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:Script Manager>
<asp:Grid View ID="gvPatient" runat="server" AutoGenerateColumns="false" OnDataBound="GridPatient_DataBound">
<Columns>
<asp:Template Field>
<Header Template>
Patient Name
</Header Template>
<Item Template>
<puc:UserControl ID="pucPatient1" runat="server" />
</Item Template>
</asp:Template Field> </Columns>
</asp:Grid View>
<asp:Button ID="btnSave" runat="server" OnClick="Save" Text="Save" OnClientClick="return StartUpload();" />
</form>
</body>
</HTML>
患者姓名
MyAspxPage.cs
DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
dt.Columns.Add("col4");
dt.Columns.Add("col5");
dt.Columns.Add("col6");
if (Session["dt"] == null)
{
dt = AddRow(dt);
gvPatient.DataSource = dt;
gvPatient.DataBind();
Session["dt"] = dt;
//ViewState["dt"] = dt;
}
else
dt = (DataTable)Session["dt"];//ViewState["dt"];
}
}
private DataTable AddRow(DataTable dt)
{
for (int i = 0; i < 5; i++)
{
DataRow dr = dt.NewRow();
dr[0] = "";
dr[1] = "";
dr[2] = "";
dr[3] = "";
dr[4] = "";
dr[5] = "";
dt.Rows.Add(dr);
}
return dt;
}
protected void GridPatient_DataBound(object sender, EventArgs e)
{
foreach (GridViewRow item in gvPatient.Rows)
{
UserControl ptuc = (UserControl)item.FindControl("pucPatient1");
string id = ptuc.SelectedValue;
}
}
public void Save(object sender, EventArgs e)
{
foreach (GridViewRow item in gvPatient.Rows)
{
if (item.RowType == DataControlRowType.DataRow)
{
UserControl ptuc = (UserControl)item.FindControl("pucPatient1");
string id = ptuc.SelectedValue;//getting null value.
string patientName = ptuc.SelectedText;
}
} }
DataTable dt;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
dt=新数据表();
dt.列添加(“第1列”);
dt.列添加(“col2”);
dt.列添加(“col3”);
dt.列添加(“col4”);
dt.列添加(“第5列”);
dt.列添加(“第6列”);
如果(会话[“dt”]==null)
{
dt=AddRow(dt);
gvPatient.DataSource=dt;
gvPatient.DataBind();
会话[“dt”]=dt;
//视图状态[“dt”]=dt;
}
其他的
dt=(数据表)会话[“dt”];//视图状态[“dt”];
}
}
专用数据表AddRow(数据表dt)
{
对于(int i=0;i<5;i++)
{
DataRow dr=dt.NewRow();
dr[0]=“”;
dr[1]=“”;
dr[2]=”;
dr[3]=”;
dr[4]=”;
dr[5]=”;
dt.Rows.Add(dr);
}
返回dt;
}
受保护的无效GridPatient_数据绑定(对象发送方、事件参数e)
{
foreach(gvPatient.Rows中的GridViewRow项)
{
UserControl ptuc=(UserControl)item.FindControl(“puct1”);
字符串id=ptuc.SelectedValue;
}
}
public void Save(对象发送方,事件参数e)
{
foreach(gvPatient.Rows中的GridViewRow项)
{
if(item.RowType==DataControlRowType.DataRow)
{
UserControl ptuc=(UserControl)item.FindControl(“puct1”);
string id=ptuc.SelectedValue;//获取空值。
字符串patientName=ptuc.SelectedText;
}
} }
这就是我所做的一切
我受够了,请帮帮我
夏拉纳玛
嗨,朋友们感谢您宝贵的回复,
实际上,它工作得很好,但用户控制有一点变化
客户选择的事件端,即
UserControl.ascx函数DispValue(发送方,e){
var source=sender.get_id();
var lastIndex=source.lastIndexOf(“”);
var replaced=source.substring(0,lastIndex+1);
var hdnId=replaced+“hdnpartientnumber”;
document.getElementById(hdnId).value=e.get_value();
} UserControl.ascx.cs
公共字符串SelectedValue {
获取{return Request.Form[this.hdnPatientNumber.UniqueID]; }
} 谢谢大家,
问候,
莎拉南玛
请编辑您的问题,以包含您遇到问题的代码的标记。然后我们可以试着帮你找出=)GridView中的隐藏字段也是吗?不,我只保留在UserControl中