gpt4 book ai didi

c# - 使用 javascript 设置的文本框值无法使用 c# 访问

转载 作者:行者123 更新时间:2023-12-02 20:41:10 26 4
gpt4 key购买 nike

我有一个带有三个文本框的 gridview txtOpeningAdvTxtAdvanceDeductedTxtClosingAdvance..... 在 TxtAdvanceDeducted 上使用 KeyUp 函数 我计算了 TxtClosingAdvance...我的页面在 TxtClosingAdvance 文本框中显示值...但是当我使用 c# 访问它时,它给出了我的错误输入字符串的格式不正确...

当我通过firebug检查时,

<input type="text" class="text_box_height_14_width_50" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_txtOpeningAdv" readonly="readonly" value="500.00" name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$txtOpeningAdv">

<input type="text" onkeyup="totalAmount(event,this);" autocomplete="off" class="text_box_height_14_width_50" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtAdvanceDeducted" name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtAdvanceDeducted">

<input type="text" class="text_box_height_14_width_50" id="ctl00_ContentPlaceHolder1_gridEmployee_ctl02_TxtClosingAdvance" readonly="readonly" name="ctl00$ContentPlaceHolder1$gridEmployee$ctl02$TxtClosingAdvance">

这是我的 GridView , alt text http://img90.imageshack.us/img90/7237/gridemp.jpg

我的 C# 代码,

foreach (GridViewRow row in gridEmployee.Rows) 
{
if (row.RowType == DataControlRowType.DataRow)
{
DataRow dr = dt.NewRow();
dr["EmpId"] = Convert.ToInt64(((HiddenField)row.Cells[0].FindControl("HiddenId")).Value);
dr["FromDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(fromdate[1].ToString()) + '/' + fromdate[0].ToString() + '/' + fromdate[2].ToString());
dr["ToDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(todate[1].ToString()) + '/' + todate[0].ToString() + '/' + todate[2].ToString());
dr["DaysPresent"] = Convert.ToDecimal(((TextBox)row.Cells[3].FindControl("TxtDaysPresent")).Text);//(row.Cells[4].Text);
dr["OpeningAdvance"] = Convert.ToDouble(((TextBox)row.Cells[4].FindControl("txtOpeningAdv")).Text);
dr["AdvanceDeducted"] = Convert.ToDouble(((TextBox)row.Cells[5].FindControl("TxtAdvanceDeducted")).Text);
dr["RemainingAdvance"] = Convert.ToDouble(((TextBox)row.Cells[6].FindControl("TxtClosingAdvance")).Text);
dr["SalaryGiven"] = Convert.ToDouble(((TextBox)row.Cells[7].FindControl("TxtSalary")).Text);
dr["CreatedDate"] = System.DateTime.Now;
dt.Rows.Add(dr);
}
}

该行有错误,dr["RemainingAdvance"] = Convert.ToDouble(((TextBox)row.Cells[6].FindControl("TxtClosingAdvance")).Text);

输入字符串的格式不正确

但是我的 gridview 有 TxtClosingAdvance="400.00"...它是一个只读文本框,其值将从 TxtAdvanceDeducted onkeyup 事件 javascript 中放置...

最佳答案

据猜测,您的字符串值为空或包含不需要的符号,请尝试检查 ((TextBox)row.Cells[6].FindControl("TxtClosingAdvance")).Text 的值如果它包含 400.00 则错误是由于服务器的区域设置“.”引起的。不是小数符号。如果它为空,则意味着 ASP.NET 无法识别您的 JavaScript 更改。出于安全原因,ASP.NET 在响应时从 VIEWSTATE 恢复不可编辑的控件值,请尝试通过设置 EnableViewState = false 禁用该控件的 VIEWSTATE。

编辑

顺便说一下,讨论了一个 ReadOnly TextBox 问题 here

希望这有帮助

关于c# - 使用 javascript 设置的文本框值无法使用 c# 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com