代码如下.不知道为什么,现在不可以了.但是我一设置断点就会成功.请知道的朋友指导.解决方法.不知道为什么会有这事情发生.环境:vs2005
我用Response.Write(strScr)有值输出.
函数
/// <summary>
/// 注册脚本函数script>/script>已经加载进去,不需要再加此句
/// </summary>
/// <param name="strScript">脚本</param>
/// <param name="page">页面</param>
public static void RegisterScript(string strScript, BasePage page)
{
String csname = DOMUtility.GenerateAGuid().ToString();
Type cstype = page.GetType();
strScript = "<script>" + strScript + "</script>";
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = page.ClientScript;
cs.RegisterClientScriptBlock(cstype, csname, strScript);
}
///////////////////注册脚本页面操作 private string TextBoxScrpit()
{
GridViewRow gvr = grdPayList.Rows[this.grdPayList.EditIndex];
TextBox txtOCI_Amount = (TextBox)gvr.FindControl("txtOCI_Amount");//数量
TextBox txtPrice = (TextBox)gvr.FindControl("txtOCIPrice");//单价
TextBox txtOCI_SumMoney = (TextBox)gvr.FindControl("txtOCI_SumMoney");//总价
string lstr = "";
lstr += " function PriceChange()";
lstr += "{"; lstr += "var ltxtOCI_Amount=document.getElementById('" + txtOCI_Amount.ClientID + "').value;";//数量
lstr += "var ltxtPrice=document.getElementById('" + txtPrice.ClientID + "').value;"; lstr += @" var regdatetime=new RegExp('^\\d+(\\.\\d+)?$');
if(ltxtOCI_Amount.match(regdatetime)==null)
{
alert('数量只可以输入大于零数字吧~!');
document.getElementById('" + txtOCI_Amount.ClientID + "').focus();" +
@"return false;
} "; lstr += @"
if(ltxtPrice.match(regdatetime)==null)
{
alert('单价只可以输入大于零数字吧~!');
document.getElementById('" + txtPrice.ClientID + "').focus();" +
@"return false;
} ";
lstr += "document.getElementById('" + txtOCI_SumMoney.ClientID + "').value=ltxtOCI_Amount * ltxtPrice ;"; lstr += "}";
return lstr;
}
protected void grdPayList_DataBound(object sender, EventArgs e)
{
if (grdPayList.EditIndex > -1)
{
GridViewRow gvr = grdPayList.Rows[grdPayList.EditIndex];
ImageButton imbtRead = (ImageButton)gvr.FindControl("imbtRead");
Label lblOCI_DI_Item = (Label)gvr.FindControl("lblOCI_DI_Item");//费用项目编号
TextBox txtOCI_Amount = (TextBox)gvr.FindControl("txtOCI_Amount");//数量
TextBox txtPrice = (TextBox)gvr.FindControl("txtOCIPrice");//单价 int raitmeID = (int)RaItemTH.GetRateItemID(int.Parse(lblOCI_DI_Item.Text.Trim()));
if (raitmeID != -1)
{
DOMUtility.RegisterScript(OpenWindows(), this);
imbtRead.Attributes.Remove("onclick");
imbtRead.Attributes.Add("onclick", "return OpenFindPrice();");
//DOMUtility.RegisterScript(TextBoxScrpit(), this);
}
else
{
imbtRead.Visible = false;
} txtOCI_Amount.Attributes.Remove("onchange");
txtPrice.Attributes.Remove("onchange");
txtOCI_Amount.Attributes.Add("onchange", "PriceChange();");
txtPrice.Attributes.Add("onchange", "PriceChange();");
string strScr = TextBoxScrpit();
//Response.Write(strScr);
DOMUtility.RegisterScript(strScr, this);
LockOneLine(gvr, imbtRead);
}
GridView gv = (GridView)sender;
foreach (GridViewRow lgvr in gv.Rows)
{
Label lblSupplyName = (Label)lgvr.FindControl("lblSupplyName");
Label lblRItem = (Label)lgvr.FindControl("lblRItem");
Label lblKeyNnode = (Label)lgvr.FindControl("lblKeyNnode");
string txtShortName = lblSupplyName.Text;
string strOCI_SD_KeyNode = lblRItem.Text;
string strlblKeyNnode = lblKeyNnode.Text;
lblSupplyName.ToolTip = txtShortName;
txtShortName = FormatGridViewText(txtShortName, 1, true);
lblSupplyName.Text = txtShortName; lblRItem.ToolTip = strOCI_SD_KeyNode;
strOCI_SD_KeyNode = FormatGridViewText(strOCI_SD_KeyNode, 3, true,2);
lblRItem.Text = strOCI_SD_KeyNode; lblKeyNnode.ToolTip = strlblKeyNnode;
strlblKeyNnode = FormatGridViewText(strlblKeyNnode, 3, true, 2);
lblKeyNnode.Text = strlblKeyNnode;
//Status
//string txtStatus = gvr.Cells[3].Text;
//gvr.Cells[3].ToolTip = txtStatus;
//txtStatus = FormatGridViewText(txtStatus, 3, true);
//gvr.Cells[3].Text = txtStatus; //CrtBy }
}
我用Response.Write(strScr)有值输出.
函数
/// <summary>
/// 注册脚本函数script>/script>已经加载进去,不需要再加此句
/// </summary>
/// <param name="strScript">脚本</param>
/// <param name="page">页面</param>
public static void RegisterScript(string strScript, BasePage page)
{
String csname = DOMUtility.GenerateAGuid().ToString();
Type cstype = page.GetType();
strScript = "<script>" + strScript + "</script>";
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = page.ClientScript;
cs.RegisterClientScriptBlock(cstype, csname, strScript);
}
///////////////////注册脚本页面操作 private string TextBoxScrpit()
{
GridViewRow gvr = grdPayList.Rows[this.grdPayList.EditIndex];
TextBox txtOCI_Amount = (TextBox)gvr.FindControl("txtOCI_Amount");//数量
TextBox txtPrice = (TextBox)gvr.FindControl("txtOCIPrice");//单价
TextBox txtOCI_SumMoney = (TextBox)gvr.FindControl("txtOCI_SumMoney");//总价
string lstr = "";
lstr += " function PriceChange()";
lstr += "{"; lstr += "var ltxtOCI_Amount=document.getElementById('" + txtOCI_Amount.ClientID + "').value;";//数量
lstr += "var ltxtPrice=document.getElementById('" + txtPrice.ClientID + "').value;"; lstr += @" var regdatetime=new RegExp('^\\d+(\\.\\d+)?$');
if(ltxtOCI_Amount.match(regdatetime)==null)
{
alert('数量只可以输入大于零数字吧~!');
document.getElementById('" + txtOCI_Amount.ClientID + "').focus();" +
@"return false;
} "; lstr += @"
if(ltxtPrice.match(regdatetime)==null)
{
alert('单价只可以输入大于零数字吧~!');
document.getElementById('" + txtPrice.ClientID + "').focus();" +
@"return false;
} ";
lstr += "document.getElementById('" + txtOCI_SumMoney.ClientID + "').value=ltxtOCI_Amount * ltxtPrice ;"; lstr += "}";
return lstr;
}
protected void grdPayList_DataBound(object sender, EventArgs e)
{
if (grdPayList.EditIndex > -1)
{
GridViewRow gvr = grdPayList.Rows[grdPayList.EditIndex];
ImageButton imbtRead = (ImageButton)gvr.FindControl("imbtRead");
Label lblOCI_DI_Item = (Label)gvr.FindControl("lblOCI_DI_Item");//费用项目编号
TextBox txtOCI_Amount = (TextBox)gvr.FindControl("txtOCI_Amount");//数量
TextBox txtPrice = (TextBox)gvr.FindControl("txtOCIPrice");//单价 int raitmeID = (int)RaItemTH.GetRateItemID(int.Parse(lblOCI_DI_Item.Text.Trim()));
if (raitmeID != -1)
{
DOMUtility.RegisterScript(OpenWindows(), this);
imbtRead.Attributes.Remove("onclick");
imbtRead.Attributes.Add("onclick", "return OpenFindPrice();");
//DOMUtility.RegisterScript(TextBoxScrpit(), this);
}
else
{
imbtRead.Visible = false;
} txtOCI_Amount.Attributes.Remove("onchange");
txtPrice.Attributes.Remove("onchange");
txtOCI_Amount.Attributes.Add("onchange", "PriceChange();");
txtPrice.Attributes.Add("onchange", "PriceChange();");
string strScr = TextBoxScrpit();
//Response.Write(strScr);
DOMUtility.RegisterScript(strScr, this);
LockOneLine(gvr, imbtRead);
}
GridView gv = (GridView)sender;
foreach (GridViewRow lgvr in gv.Rows)
{
Label lblSupplyName = (Label)lgvr.FindControl("lblSupplyName");
Label lblRItem = (Label)lgvr.FindControl("lblRItem");
Label lblKeyNnode = (Label)lgvr.FindControl("lblKeyNnode");
string txtShortName = lblSupplyName.Text;
string strOCI_SD_KeyNode = lblRItem.Text;
string strlblKeyNnode = lblKeyNnode.Text;
lblSupplyName.ToolTip = txtShortName;
txtShortName = FormatGridViewText(txtShortName, 1, true);
lblSupplyName.Text = txtShortName; lblRItem.ToolTip = strOCI_SD_KeyNode;
strOCI_SD_KeyNode = FormatGridViewText(strOCI_SD_KeyNode, 3, true,2);
lblRItem.Text = strOCI_SD_KeyNode; lblKeyNnode.ToolTip = strlblKeyNnode;
strlblKeyNnode = FormatGridViewText(strlblKeyNnode, 3, true, 2);
lblKeyNnode.Text = strlblKeyNnode;
//Status
//string txtStatus = gvr.Cells[3].Text;
//gvr.Cells[3].ToolTip = txtStatus;
//txtStatus = FormatGridViewText(txtStatus, 3, true);
//gvr.Cells[3].Text = txtStatus; //CrtBy }
}
但是如果我没有设置任何断点.那边脚本就注册不成功.
/// 注册脚本函数script>/script>已经加载进去,不需要再加此句
/// </summary>
/// <param name="strScript">脚本</param>
/// <param name="page">页面</param>
public static void RegisterScript(string strScript, BasePage page)
{
String csname = DOMUtility.GenerateAGuid().ToString();
Type cstype = page.GetType();
strScript = "<script>" + strScript + "</script>";
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = page.ClientScript;
cs.RegisterClientScriptBlock(cstype, csname, strScript);
}
///////////////////注册脚本函数
CSDN - 专家门诊 - .NET技术 ASP.NET问题
回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 关闭窗口
主 题: GridView注册脚本问题.直接运行脚本注册没有成功.但是调试的时候设置断点就会成功!
作 者: naturalth (自我批判,是思想、品德、素质、技能创新的优良工具)
等 级:
信 誉 值: 99
所属论坛: .NET技术 ASP.NET
问题点数: 200
回复次数: 4
发表时间: 2006-12-20 12:51:47
代码如下.不知道为什么,现在不可以了.但是我一设置断点就会成功.请知道的朋友指导.解决方法.不知道为什么会有这事情发生.环境:vs2005
我用Response.Write(strScr)有值输出.
函数
/// <summary>
/// 注册脚本函数script>/script>已经加载进去,不需要再加此句
/// </summary>
/// <param name="strScript">脚本</param>
/// <param name="page">页面</param>
public static void RegisterScript(string strScript, BasePage page)
{
String csname = DOMUtility.GenerateAGuid().ToString();
Type cstype = page.GetType();
strScript = "<script>" + strScript + "</script>";
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = page.ClientScript;
cs.RegisterClientScriptBlock(cstype, csname, strScript);
}
///////////////////注册脚本页面操作private string TextBoxScrpit()
{
GridViewRow gvr = grdPayList.Rows[this.grdPayList.EditIndex];
TextBox txtOCI_Amount = (TextBox)gvr.FindControl("txtOCI_Amount");//数量
TextBox txtPrice = (TextBox)gvr.FindControl("txtOCIPrice");//单价
TextBox txtOCI_SumMoney = (TextBox)gvr.FindControl("txtOCI_SumMoney");//总价
string lstr = "";
lstr += " function PriceChange()";
lstr += "{";lstr += "var ltxtOCI_Amount=document.getElementById('" + txtOCI_Amount.ClientID + "').value;";//数量
lstr += "var ltxtPrice=document.getElementById('" + txtPrice.ClientID + "').value;";lstr += @" var regdatetime=new RegExp('^\\d+(\\.\\d+)?$');if(ltxtOCI_Amount.match(regdatetime)==null)
{
alert('数量只可以输入大于零数字吧~!');
document.getElementById('" + txtOCI_Amount.ClientID + "').focus();" +
@"return false;
}";lstr += @"
if(ltxtPrice.match(regdatetime)==null)
{
alert('单价只可以输入大于零数字吧~!');
document.getElementById('" + txtPrice.ClientID + "').focus();" +
@"return false;
}";
lstr += "document.getElementById('" + txtOCI_SumMoney.ClientID + "').value=ltxtOCI_Amount * ltxtPrice ;";lstr += "}";return lstr;
}脚本内容
2. BasePage 这个类是你自己写的类吧?里面有没有作了一些相关操作?
3.在DOMUtility.RegisterScript(strScr, this); 这一句前,直接用
this.ClientScript来输出看行不行?
txtPrice.Attributes.Remove("onchange");
txtOCI_Amount.Attributes.Add("onchange", "PriceChange();");
txtPrice.Attributes.Add("onchange", "PriceChange();");
string strScr = TextBoxScrpit();
//Response.Write(strScr);
DOMUtility.RegisterScript(strScr, this);注册脚本.如果不是调试的化是注册不成功的.
DOMUtility.RegisterScript(OpenWindows(), this);
imbtRead.Attributes.Remove("onclick");
imbtRead.Attributes.Add("onclick", "return OpenFindPrice();");
此处我注册另外一个脚本.是一个函数
而我另外一个函数即我刚才要注册的那个函数.
我把这个两个脚本放在一起注册就成功了.