Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview中的.net文本框,在回发时不知道客户端javascript的背景颜色更改_C#_.net_Gridview_Textbox - Fatal编程技术网

C# gridview中的.net文本框,在回发时不知道客户端javascript的背景颜色更改

C# gridview中的.net文本框,在回发时不知道客户端javascript的背景颜色更改,c#,.net,gridview,textbox,C#,.net,Gridview,Textbox,在gridview中,我有以下包含文本框的模板字段 <asp:TemplateField ShowHeader="true" ItemStyle-HorizontalAlign="left" ItemStyle-VerticalAlign="Middle" ItemStyle-Width="106px" HeaderText="Actual Order"> <ItemTemplate>

在gridview中,我有以下包含文本框的模板字段

<asp:TemplateField ShowHeader="true" ItemStyle-HorizontalAlign="left" ItemStyle-VerticalAlign="Middle" ItemStyle-Width="106px" HeaderText="Actual Order">
                            <ItemTemplate>                                
                                <asp:TextBox runat="server" ID="txtActualOrder" Columns="4" Text='<%#Eval("QtyOrdered")%>' 
                                    CausesValidation="true" onBlur='validate(...)'/>                                       
                            </ItemTemplate>
                        </asp:TemplateField>

当用户勾选单元格时,我验证在文本框中输入的数量,并将文本框背面颜色更改为黄色(如果有效),红色(如果无效)(在javascript中)

然后,我有一个save按钮,它会发回服务器并在gridview中循环。我可以从文本框中获取新输入的文本值,但我不知道单元格的背景色已更改为黄色。VS表示单元格仍然是白色的默认值。下面的if语句始终为false,VS调试器表示单元格仍然为白色。有人知道为什么回发时我可以得到新的文本值,但不能得到单元格的新背景色吗?将我的gridviewrow记录标记为已授权,然后在回发时将该值传递回服务器的最佳方法是什么?请不要质疑我在客户端验证任何非最佳实践的架构。这是客户的要求


foreach(gvProducts.Rows中的GridViewRow行)
{
TextBox tbactuallorder=(TextBox)行。单元格[3]。FindControl(“txtActuallorder”);
如果(TBR!=null)
{
if(tbactuallorder.BackColor!=System.Drawing.Color.FromName(“黄色”))
{}
}
}

发生POST时,控件的颜色不是提交数据的一部分。您需要创建一个姐妹隐藏字段来存储有效/无效数据。类似于


当然,验证客户端以更新UI,然后丢弃验证结果并在服务器端重新进行验证是执行验证的正确方法。

如果我理解正确,您的方法并不理想,因为您是在客户端而不是服务器端验证数据。您应该检查此值在服务器上是否有效(如果需要,还应检查客户端)。我不敢相信客户会阻止你在服务器端检查。谢谢你的解释。我想得太多了,想尝试在gridview行中放置一个隐藏字段。相反,我在页面上放置了一个隐藏字段,用于存储对已批准项目的引用。

foreach (GridViewRow row in gvProducts.Rows)
                {
TextBox tbActualOrder = (TextBox)row.Cells[3].FindControl("txtActualOrder");
                        if (tbActualOrder != null)
                        {
if (tbActualOrder.BackColor != System.Drawing.Color.FromName("yellow"))
                                {}
}
}