【问题标题】:Custom Control with TextBox in GridView in ASP.net在 ASP.net 的 GridView 中使用 TextBox 自定义控件
【发布时间】:2013-08-25 18:47:05
【问题描述】:

我创建了一个带有文本框的自定义控件。

我在 GridView 中调用它。当更新事件被触发时,它总是保存 0。 我使用了以下代码,任何人都可以提供帮助。

以下是用于自定义控件的代码。

ASCX 代码

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ItemRequiredTextBox.ascx.cs"
Inherits="ItemRequiredTextBox" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:TextBox ID="txtWin_Delievered_Qty" runat="server" > 

<asp:FilteredTextBoxExtender ID="ftbe3" runat="server" TargetControlID="txtWin_Delievered_Qty"
ValidChars="1234567890" />
<asp:CompareValidator ID="CompareValidator1" runat="server" Display="None" ValueToCompare='<%# this.Text2 %>' ControlToValidate="txtWin_Delievered_Qty" Type="Integer"
ErrorMessage="Quantity to be delievered can not be More than Required Quantity"
Operator="LessThanEqual">

<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" TargetControlID="CompareValidator1"
runat="server">

<asp:CompareValidator ID="CompareValidator2" runat="server" Display="None" ValueToCompare='<%# this.Text1 %>' ControlToValidate="txtWin_Delievered_Qty" Type="Integer"
ErrorMessage="Quantity delievered can not be less than delievered Quantity" Operator="GreaterThanEqual">
<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender2" TargetControlID="CompareValidator2"
runat="server">

ASCX.CS 代码

using System;
using System.Data;
using System.ComponentModel;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ItemRequiredTextBox : System.Web.UI.UserControl
{
[Bindable(true, BindingDirection.TwoWay)]

protected void Page_Load(object sender, EventArgs e)
{

}

private int TexT1;
private int TexT2;

public int Text1
{
get { return TexT1; }
set { TexT1 = value; }
}

public int Text2
{
get { return TexT2; }
set { TexT2 = value; }
}
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}

set
{
ViewState["Text"] = value;
}
}




}

【问题讨论】:

    标签: asp.net gridview custom-controls


    【解决方案1】:

    在用户控件中创建一个公共属性来获取文本框的值:

    public string Text
    {
        get
        {
            return txtWin_Delievered_Qty.Text;
        }
    }
    

    并访问gridview更新事件中的值:

    ItemRequiredTextBox irtBox = (ItemRequiredTextBox)gvMyGridView.Rows[e.Item.ItemIndex].FindControl("updatedBy");
    string myText = irtBox.Text;
    

    这里的 gvMyGridView 是你的 gridview

    【讨论】:

    • 谢谢我得到了答案....我实际上将相同的值绑定到 2 个属性,我删除了一个并且它起作用了....非常感谢无论如何:)
    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多