Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# ASP.Net中gridview中绑定字段的最大长度_C#_Asp.net - Fatal编程技术网

C# ASP.Net中gridview中绑定字段的最大长度

C# ASP.Net中gridview中绑定字段的最大长度,c#,asp.net,C#,Asp.net,我必须在可编辑的gridview中设置绑定字段的最大长度。为此,我使用了数据格式字符串属性,并给出了ApplyFormatInEditMode=“true”,但它仍然接受无效输入。gridview没有模板字段,它只包含绑定字段。我已经写过行编辑和行更新事件。dataformat字符串为DataFormatString=“{0:N0}”,但它也接受“235234523455234543523455”输入,并在数据库中更新时显示服务器错误。我想指定在单击编辑按钮时动态生成的文本框的最大长度 Data

我必须在可编辑的gridview中设置绑定字段的最大长度。为此,我使用了数据格式字符串属性,并给出了ApplyFormatInEditMode=“true”,但它仍然接受无效输入。gridview没有模板字段,它只包含绑定字段。我已经写过行编辑和行更新事件。dataformat字符串为DataFormatString=“{0:N0}”,但它也接受“235234523455234543523455”输入,并在数据库中更新时显示服务器错误。我想指定在单击编辑按钮时动态生成的文本框的最大长度

DataFormatString
不处理
MaxLength
。尝试在文本框内使用
DataBinder.Eval()
,并在那里设置
MaxLength
。例如:

<asp:TemplateField HeaderText="My Text">
<ItemTemplate>
<asp:TextBox ID="txtID"  MaxLength="10" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "YOUR_BOUND_ITEM_NAME") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>

可能有帮助。

DataFormatString
不处理
MaxLength
。尝试在文本框内使用
DataBinder.Eval()
,并在那里设置
MaxLength
。例如:

<asp:TemplateField HeaderText="My Text">
<ItemTemplate>
<asp:TextBox ID="txtID"  MaxLength="10" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "YOUR_BOUND_ITEM_NAME") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>

可能会有所帮助。

我通过在gridview中的Rowdatabound事件中编写以下代码来实现这一点。在这个事件中,我隐式地将gridview单元格转换为动态生成的文本框,并为它们设置宽度和最大长度。在按键事件中,我已阻止在文本框中输入字母和其他特殊字符。现在它工作正常了!。代码如下:

if (e.Row.RowType == DataControlRowType.DataRow) 
    {
        for (int i = 0; i < dgv.Columns.Count - 1; i++)
        {
            if ((e.Row.Cells[i].Controls.Count > 0) && (e.Row.Cells[i].Controls[0] is TextBox))
            {
                ((TextBox)e.Row.Cells[i].Controls[0]).Width = 40;
                ((TextBox)e.Row.Cells[i].Controls[0]).MaxLength = 5;
            }
        }
    }            
    //To make the text box accept numbers, delete, backspace, numlock,dot only
    e.Row.Attributes.Add("onkeypress", "javascript: var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;  return ((Key >= 48 && Key <= 57) || (Key == 110) || (Key == 190) || (Key == 8) || (Key == 46) || (Key == 144))");
if(e.Row.RowType==DataControlRowType.DataRow)
{
对于(int i=0;i0)和&(e.Row.Cells[i].Controls[0]为文本框))
{
((文本框)e.Row.Cells[i].控件[0])。宽度=40;
((文本框)e.Row.Cells[i].控件[0])。MaxLength=5;
}
}
}            
//要使文本框仅接受数字、删除、退格、numlock和点

e、 添加(“onkeypress”,“javascript:var Key=event.keyCode?event.keyCode:event.which?event.which:event.charCode”;返回((Key>=48&&Key我通过在gridview中的Rowdatabound事件中编写以下代码来完成此操作。在此事件中,我已隐式地将gridview单元格转换为动态生成的文本框,并为它们设置宽度和最大长度。在按键事件中,我已阻止在文本框中输入字母和其他特殊字符。现在我t工作正常!代码如下:

if (e.Row.RowType == DataControlRowType.DataRow) 
    {
        for (int i = 0; i < dgv.Columns.Count - 1; i++)
        {
            if ((e.Row.Cells[i].Controls.Count > 0) && (e.Row.Cells[i].Controls[0] is TextBox))
            {
                ((TextBox)e.Row.Cells[i].Controls[0]).Width = 40;
                ((TextBox)e.Row.Cells[i].Controls[0]).MaxLength = 5;
            }
        }
    }            
    //To make the text box accept numbers, delete, backspace, numlock,dot only
    e.Row.Attributes.Add("onkeypress", "javascript: var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;  return ((Key >= 48 && Key <= 57) || (Key == 110) || (Key == 190) || (Key == 8) || (Key == 46) || (Key == 144))");
if(e.Row.RowType==DataControlRowType.DataRow)
{
对于(int i=0;i0)和&(e.Row.Cells[i].Controls[0]为文本框))
{
((文本框)e.Row.Cells[i].控件[0])。宽度=40;
((文本框)e.Row.Cells[i].控件[0])。MaxLength=5;
}
}
}            
//要使文本框仅接受数字、删除、退格、numlock和点

e、 Row.Attributes.Add(“onkeypress”,“javascript:var-Key=event.keyCode?event.keyCode:event.which?event.which:event.charCode;return”((Key>=48&&Key)您可以对已经呈现的文本框使用Jquery,前提是您为它们分配了CSS类

$(".numericInputTextBox").each(function() {
     $(this).attr("MaxLength", "9");
 )};

您可以对已经呈现的文本框使用Jquery,前提是您为它们指定了CSS类

$(".numericInputTextBox").each(function() {
     $(this).attr("MaxLength", "9");
 )};

正如您所提到的,这是针对可编辑的gridview的,因此您真正想要做的是在gridview处于编辑模式时设置TextBox的MaxLength属性。为此,您需要将BoundField替换为,然后使用创建具有MaxLength的TextBox:

<asp:TemplateField HeaderText="My Field Name">
    <ItemTemplate><%# Eval("sMyFieldName")%></ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="sMyFieldName" Text='<%# Bind("sMyFieldName") %>' Width="250" MaxLength="10" ></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

正如您所提到的,这是用于可编辑的gridview,因此您真正想要做的是在gridview处于编辑模式时设置文本框的MaxLength属性。为此,您需要将BoundField替换为,然后使用以MaxLength创建文本框:

<asp:TemplateField HeaderText="My Field Name">
    <ItemTemplate><%# Eval("sMyFieldName")%></ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox runat="server" ID="sMyFieldName" Text='<%# Bind("sMyFieldName") %>' Width="250" MaxLength="10" ></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>


我没有使用模板字段,我只在gridview中使用绑定字段!替换为上面的代码段;它将与
绑定字段
的工作原理相同。请在绑定字段中建议解决方案self!我们无法将绑定字段更改为模板字段。虽然我们可以轻松地在编辑项模板中添加文本框,甚至添加验证甚至ajax扩展程序,但我们必须仅使用绑定字段来完成此功能。我已使用绑定字段本身完成此功能!!感谢您的帮助,请检查答案。我没有使用模板字段,我仅在gridview中使用绑定字段!替换为上面的代码段;它的工作原理与
BoundField
相同。请在绑定字段本身中建议解决方案!我们无法更改e绑定字段作为模板字段。虽然我们可以轻松地在编辑项模板中添加文本框,甚至添加验证甚至ajax扩展程序,但我们必须仅使用绑定字段来完成此功能。我已使用绑定字段本身完成此功能!!感谢您的帮助,请检查答案。我还尝试添加了HtmlEncode属性为false。但仍然不起作用!我还尝试将HtmlEncode属性添加为false。但仍然不起作用!