ASP.NET Gridview:如何停止<;span></span>;在Gridview中,是否可以在发回时重置?
我有一个Gridview,其中包含一些控件,当用户从Gridview中进行选择时,这些控件会从服务器更新 在从下拉列表中进行选择之后,用户可以在一行的文本框中输入一个百分比,我有一些javascript,它可以执行一些计算并输出到Gridview中项目模板内的范围 这一切都是可行的,但如果用户在任何一行上进行另一个下拉列表选择,gridview中的所有跨距都将重置为空白(我尝试了各种控件,包括asp.net和html) 这些都在更新面板中 代码:ASP.NET Gridview:如何停止<;span></span>;在Gridview中,是否可以在发回时重置?,asp.net,gridview,postback,Asp.net,Gridview,Postback,我有一个Gridview,其中包含一些控件,当用户从Gridview中进行选择时,这些控件会从服务器更新 在从下拉列表中进行选择之后,用户可以在一行的文本框中输入一个百分比,我有一些javascript,它可以执行一些计算并输出到Gridview中项目模板内的范围 这一切都是可行的,但如果用户在任何一行上进行另一个下拉列表选择,gridview中的所有跨距都将重置为空白(我尝试了各种控件,包括asp.net和html) 这些都在更新面板中 代码: 0 查看您的下拉列表选择是否有任何回发 如
0
查看您的下拉列表选择是否有任何回发 如果是,则范围值将消失,因为范围不是ASP.NET网络控制。页面回发后,asp.net webcontrol值将从ViewState恢复。因此,跨度没有ViewState,也不会恢复任何值。 您可以尝试将标记更改为
<span runat="server" id="spanIDHere">SomeValue here</span>
SomeValue在这里
runat=“server”使span成为HtmlGenericControl并保持其视图状态
如果使用Javascript更新跨度值,则回发后不会保存跨度值。您应该调用服务器端函数来更新span值或尝试使用隐藏字段来存储您的值。您可以使用“AutoPostBack”属性来控制某些控件的回发事件。从您的问题中,我了解到您是在用javascript进行计算并将其分配给span,但是当下次回发发生时,该值不会保留…如果我是对的,我建议您尝试以下步骤。使用HiddenFields也可以指定值,因为HiddenFields在回发期间保留值
function calculate(hdnID)
{
var CalcValue=//do your Calculation
document.getElementByID(hdnID).Value=CalcValue;
}
3.在下拉回发事件中,再次绑定GridView
上面的代码应该可以解决您面临的问题。将span更改为runat=“server”仍然无法保留该值,我以前曾尝试使用asp.net标签将该值存储在中,但这也不起作用。我添加了Gridview代码,您还想看些什么吗?如果使用Javascript更新span值,然后它只在客户端工作。回发后,服务器端将看不到这些值。您需要调用一些服务器端函数或尝试使用隐藏字段。但是回发需要进行,我只需要保留通过javascript更新的控件中的值。我认为您可以将控件值保留在viewstate或sessions中,然后在回发时将其加载回问题是我没有将任何数据绑定到网格,我只是在下拉列表的选定索引上填充一些值。因此RowDataBound没有被激发。我看到您没有绑定GridView,并且您希望保留值,您仍然可以将值分配给HiddenField,并且在pageload中的回发后将该HiddenField值分配回Span…使用“GridViewRow”GridViewRow selectRow=grd.Rows(索引)。HtmlGenericControl spnKj=(HtmlGenericControl)selectRow.Cells[3].FindControl(“spnKj”);spnKj.innerHTML=HiddenField值;
protected void grd_RowDataBound(object sender,GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
HiddenField hdn = ((HiddenField)e.Row.FindControl("HiddenFieldID"));
TextBox txtPercentage = (TextBox)e.Row.FindControl("txtPercentage");
HtmlGenericControl spnKj=(HtmlGenericControl )e.Row.FindControl("spnKj");
txtPercentage.Attributes["onClick"]="calculate(this,'"+hdn .ClientID+"');"
spnKj.innerHTML=hdn.Value;
}
}
function calculate(hdnID)
{
var CalcValue=//do your Calculation
document.getElementByID(hdnID).Value=CalcValue;
}