簡體   English   中英

在用戶控制文本框中設置值,選擇索引已更改 Asp.net Web 表單

[英]Set value in user Control textbox with select index changed Asp.net web forms

當在 gridview 中單擊按鈕選擇時,我試圖從數據庫中設置值。

這是我的控件背后的代碼,我已經獲取並設置了每個文本框:

  public string candiType
    {
        get { return radType.SelectedValue; }
        set { radType.SelectedValue = value; }
    }

    public string sfname
    {
        get { return txtFname.Text.Trim(); }
        set { txtFname.Text = value; }
    }

    public string slname
    {
        get { return txtLName.Text.Trim(); }
        set { txtLName.Text = value; }
    }

    public string soname
    {
        get { return txtOName.Text.Trim(); }
        set { txtOName.Text = value; }
    }

    public string sNic
    {
        get { return txtStudNic.Text.Trim(); }
        set { txtStudNic.Text = value; }
    }

    public string dob
    {
        get { return txtDob.Text; }
        set { txtDob.Text = value; }
    }

    public string Street
    {
        get { return txtStreet.Text.Trim(); }
        set { txtStreet.Text = value; }
    }

    public string PostalCode
    {
        get { return txtPostalCode.Text.Trim(); }
        set { txtPostalCode.Text = value; }
    }

    public string Locality
    {
        get { return txtlocality.Text.Trim(); }
        set { txtlocality.Text = value; }
    }

    public string TownVillage
    {
        get { return txtTownVillage.Text.Trim(); }
        set { txtTownVillage.Text = value; }
    }

    public string College
    {
        get { return ddlCol.SelectedValue; }
        set { ddlCol.SelectedValue = value; }
    }

    public int CollegeIndex
    {
        get { return ddlCol.SelectedIndex; }
        set { ddlCol.SelectedIndex = value; }
    }

    public string rpFname
    {
        get { return txtRpfname.Text.Trim(); }
        set { txtRpfname.Text = value; }
    }

    public string rpLname
    {
        get { return txtRplname.Text.Trim(); }
        set { txtRplname.Text = value; }
    }

    public string rpNic
    {
        get { return txtRpNic.Text.Trim(); }
        set { txtRpNic.Text = value; }
    }

    public string ContactNumber
    {
        get { return txtPhone.Text.Trim(); }
        set { txtPhone.Text = value; }
    }

    public string Email
    {
        get { return txtEmail.Text.Trim(); }
        set { txtEmail.Text = value; }
    }
    public bool showRadioCan
    {
        get { return pCand.Visible; }
        set { pCand.Visible = value; }
    }
    public bool showDropCol
    {
        get { return pCol.Visible; }
        set { pCol.Visible = value; }
    }

ControlRegister.ascx 代碼:

   <ContentTemplate>
    <fieldset>
        <legend>Student Info</legend>
        <hr />

        <asp:Panel ID="pCand" CssClass="row" runat="server">
           
                <div class="col-12">
                    <h6 class="mb-2 pb-1">Private Candidate? </h6>
                    <div class="form-check form-check-inline">
                        <asp:RadioButtonList CssClass="form-check-input"
                            AutoPostBack="true"
                            OnSelectedIndexChanged="radType_SelectedIndexChanged" ID="radType" RepeatDirection="Horizontal" Width="100px" runat="server">

                            <asp:ListItem Value="Yes">Yes</asp:ListItem>
                            <asp:ListItem Selected="True" Value="No">No</asp:ListItem>
                        </asp:RadioButtonList>
                    </div>
              
        </asp:Panel>

        <div class="row">

            <div class="col-md-4 mb-4">

                <div class="form-outline">
                    <asp:Label ID="lblFName" runat="server" CssClass="form-label" Text="First Name"></asp:Label>
                    <asp:TextBox ID="txtFname" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>

                    <asp:RequiredFieldValidator ID="rfvfname" runat="server"
                        Display="Dynamic" ForeColor="Red"
                        ControlToValidate="txtFname"
                        SetFocusOnError="true"
                        ValidationGroup=""
                        ErrorMessage="First Name is Mandatory"></asp:RequiredFieldValidator>

                </div>

            </div>
            <div class="col-md-4 mb-4 ">

                <div class="form-outline">
                    <asp:Label ID="lblLName" runat="server" CssClass="form-label" Text="Last Name"></asp:Label>
                    <asp:TextBox ID="txtLName" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                    <span class="focus-input100"></span>
                    <asp:RequiredFieldValidator ID="rfvlname" runat="server"
                        Display="Dynamic" ForeColor="Red"
                        ControlToValidate="txtLName"
                        SetFocusOnError="true"
                        ValidationGroup=""
                        ErrorMessage="Last Name is Mandatory"></asp:RequiredFieldValidator>
                </div>

            </div>
            <div class="col-md-4 mb-4 ">

                <div class="form-outline">
                    <asp:Label ID="lblOName" runat="server" CssClass="form-label" Text="Other Name"></asp:Label>
                    <asp:TextBox ID="txtOName" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                    <span class="focus-input100"></span>

                </div>

            </div>
        </div>
        <div class="row">
            <div class="col-md-7 mb-4">
                <asp:Label ID="lblNid" runat="server" CssClass="form-label" Text="Student NIC"></asp:Label>
                <asp:TextBox ID="txtStudNic" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator
                    ID="rfvNic"
                    runat="server"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtStudNic"
                    SetFocusOnError="true"
                    ErrorMessage="NIC is Mandatory"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator
                    ID="revNic"
                    runat="server"
                    ValidationExpression="^[a-zA-Z0-9\s]{14}$"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtStudNic"
                    SetFocusOnError="true"
                    ErrorMessage="Must contain 14 characters"></asp:RegularExpressionValidator>
                <asp:CustomValidator
                    ID="cvStudNic"
                    runat="server"
                    OnServerValidate="cvNic_ServerValidate"
                    ClientValidationFunction="CustomCompareValidator"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtStudNic"
                    SetFocusOnError="true"
                    ErrorMessage="Invalid NIC"></asp:CustomValidator>
            </div>
            <div class="col-md-5 mb-4 d-flex align-items-center">
                <asp:Label ID="lblDob" runat="server" CssClass="form-label" Text="Date of Birth"></asp:Label>
                <asp:TextBox ID="txtDob" CssClass="form-control form-control-lg" TextMode="Date" name="date" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvDob" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtDob"
                    SetFocusOnError="true"
                    ValidationGroup=""
                    ErrorMessage="Date of Birth is Mandatory"></asp:RequiredFieldValidator>
                <asp:RangeValidator ID="rvDb" runat="server"
                    Display="Dynamic"
                    SetFocusOnError="true"
                    Type="Date"
                    ForeColor="Red"
                    Text="You should be more than 14 years old"
                    ControlToValidate="txtDob"
                    ErrorMessage="You should be more than 14 years old">

                </asp:RangeValidator>
            </div>

        </div>

        <asp:Panel ID="pCol" CssClass="row" Visible="true" runat="server">

            <div class="col-12">
                <asp:Label ID="lblCollege" runat="server" CssClass="form-label" Text="College Attend"> </asp:Label>
                <asp:DropDownList ID="ddlCol" CssClass="select form-control-lg" runat="server"
                    DataSourceID="srcCollege"
                    DataTextField="col_name"
                    DataValueField="col_Id"
                    AppendDataBoundItems="true">
                </asp:DropDownList>
                <asp:RequiredFieldValidator ID="revCol" runat="server"
                    ControlToValidate="ddlCol"
                    SetFocusOnError="true"
                    Display="Dynamic"
                    ForeColor="Red"
                    InitialValue="-1"
                    ErrorMessage="Colleges selection is Mandatory">

                </asp:RequiredFieldValidator>
            </div>

        </asp:Panel>

    </fieldset>



    <fieldset>
        <legend>Address</legend>
        <hr />
        <div class="row">
            <div class="col-md-7 mb-4 ">
                <asp:Label ID="lblStreet" CssClass="form-label" runat="server" Text="Street"></asp:Label>
                <asp:TextBox ID="txtStreet" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvStreet" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtStreet"
                    SetFocusOnError="true"
                    ValidationGroup=""
                    ErrorMessage="Street is Mandatory"></asp:RequiredFieldValidator>
            </div>
            <div class="col-md-5 mb-4 ">
                <asp:Label ID="lblPostalCode" CssClass="form-label" runat="server" Text="Postal Code">
                </asp:Label>
                <asp:TextBox ID="txtPostalCode" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvpCode" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtPostalCode"
                    SetFocusOnError="true"
                    ValidationGroup=""
                    ErrorMessage="Postal Code is Mandatory"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revPostalCode" runat="server"
                    ControlToValidate="txtPostalCode"
                    Display="Dynamic"
                    Text="Incorect Postal Code"
                    SetFocusOnError="true"
                    ForeColor="Red"
                    ValidationExpression="\b\d{5}\b"
                    ErrorMessage="Incorect Postal Code"></asp:RegularExpressionValidator>
            </div>

        </div>
        <div class="row">

            <div class="col-md-6 mb-4 ">
                <asp:Label ID="lbllocality" runat="server" CssClass="form-label" Text="Locality"></asp:Label>
                <asp:TextBox ID="txtlocality" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvlocality" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtlocality"
                    SetFocusOnError="true"
                    ValidationGroup=""
                    ErrorMessage="Locality is Mandatory"></asp:RequiredFieldValidator>
            </div>
            <div class="col-md-6 mb-4 ">
                <asp:Label ID="lblTownVilage" runat="server" CssClass="form-label" Text="Town/Village"></asp:Label>
                <asp:TextBox ID="txtTownVillage" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvTV" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtTownVillage"
                    SetFocusOnError="true"
                    ValidationGroup=""
                    ErrorMessage="Town/Village is Mandatory"></asp:RequiredFieldValidator>
            </div>

        </div>
    </fieldset>
    <fieldset>
        <legend>Responsible Party Info</legend>
        <hr />
        <div class="row">
            <div class="col-md-6 mb-4">
                <div class="form-outline">
                    <asp:Label ID="lblRpfname" runat="server" CssClass="form-label" Text="Responsible Party First Name"></asp:Label>
                    <asp:TextBox ID="txtRpfname" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>

                    <asp:RequiredFieldValidator ID="rfvRpLname" runat="server"
                        Display="Dynamic" ForeColor="Red"
                        ControlToValidate="txtRpfname"
                        SetFocusOnError="true"
                        ValidationGroup=""
                        ErrorMessage="Responsible Party First Name is Mandatory"></asp:RequiredFieldValidator>

                </div>
            </div>
            <div class="col-md-6 mb-4">
                <div class="form-outline">
                    <asp:Label ID="lblRplname" runat="server" CssClass="form-label" Text="Responsible Party Last Name"></asp:Label>
                    <asp:TextBox ID="txtRplname" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>

                    <asp:RequiredFieldValidator ID="rfvRpFname" runat="server"
                        Display="Dynamic" ForeColor="Red"
                        ControlToValidate="txtRplname"
                        SetFocusOnError="true"
                        ValidationGroup=""
                        ErrorMessage="Responsible Party Last Name is Mandatory"></asp:RequiredFieldValidator>

                </div>
            </div>

        </div>
        <div class="row">
            <div class="col-md-7 mb-4">
                <asp:Label ID="lblRpNic" runat="server" CssClass="form-label" Text="Responsible Party NIC"></asp:Label>
                <asp:TextBox ID="txtRpNic" CssClass="form-control form-control-lg" type="text" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator
                    ID="rfvRpNic"
                    runat="server"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtRpNic"
                    SetFocusOnError="true"
                    ErrorMessage="NIC is Mandatory"></asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator
                    ID="revRpNic"
                    runat="server"
                    ValidationExpression="^[a-zA-Z0-9\s]{14}$"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtRpNic"
                    SetFocusOnError="true"
                    ErrorMessage="Must contain 14 characters"></asp:RegularExpressionValidator>
                <asp:CustomValidator
                    ID="cvRpNic"
                    runat="server"
                    OnServerValidate="cvNic_ServerValidate"
                    ClientValidationFunction="CustomCompareValidator"
                    Display="Dynamic"
                    ForeColor="Red"
                    ControlToValidate="txtRpNic"
                    SetFocusOnError="true"
                    ErrorMessage="Invalid NIC"></asp:CustomValidator>
                <asp:CompareValidator ID="cmVnic"
                    runat="server"
                    ControlToValidate="txtRpNic"
                    ControlToCompare="txtStudNic"
                    Operator="NotEqual"
                    Type="String"
                    Display="Dynamic"
                    ForeColor="Red"
                    ErrorMessage="Nic cannot be same as for student"></asp:CompareValidator>
            </div>
            <div class="col-md-5 mb-4">
                <asp:Label ID="lblPhone" CssClass="form-label" runat="server" Text="Phone Number"></asp:Label>
                <asp:TextBox ID="txtPhone" CssClass="form-control form-control-lg" TextMode="Phone" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvMob" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtPhone"
                    SetFocusOnError="true"
                    ErrorMessage="Contact number is Mandatory">
                </asp:RequiredFieldValidator>
                <asp:CompareValidator ID="cmpVtxtPhone" runat="server"
                    ControlToValidate="txtPhone"
                    Operator="DataTypeCheck"
                    Type="Integer"
                    SetFocusOnError="true"
                    Display="Dynamic"
                    Text="Incorect data type"
                    ForeColor="Red"
                    ErrorMessage="Should be only numeric"></asp:CompareValidator>
                <asp:RegularExpressionValidator ID="revPhone"
                    runat="server"
                    ControlToValidate="txtPhone"
                    SetFocusOnError="true"
                    Display="Dynamic"
                    ValidationExpression="^([0-9]{8})$"
                    ErrorMessage="Invalid Phone Number"></asp:RegularExpressionValidator>

            </div>

        </div>
        <div class="row">
            <div class="col-md-7 mb-4">
                <asp:Label ID="lblEmail" CssClass="form-label" runat="server" Text="Email Address"></asp:Label>
                <asp:TextBox ID="txtEmail" CssClass="form-control form-control-lg" TextMode="Email" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvEmail" runat="server"
                    Display="Dynamic" ForeColor="Red"
                    ControlToValidate="txtEmail"
                    SetFocusOnError="true"
                    ErrorMessage="Email is Mandatory">
                </asp:RequiredFieldValidator>
                <asp:RegularExpressionValidator ID="revEmail" runat="server"
                    ControlToValidate="txtEmail"
                    Display="Dynamic"
                    Text="Incorect Email"
                    SetFocusOnError="true"
                    ForeColor="Red"
                    ValidationExpression="^[a-z0-9][-a-z0-9._]+@([-a-z0-9]+[.])+[a-z]{2,5}$"
                    ErrorMessage="Incorrect Email"></asp:RegularExpressionValidator>
            </div>
        </div>
    </fieldset>
</ContentTemplate>

我的 gridview 網絡表單代碼:

 <asp:GridView
                    ID="gvs_stud"
                    AutoGenerateColumns="false"
                    DataKeyNames="stud_Id"
                    ClientIDMode="Static"
                    OnSelectedIndexChanged="gvs_stud_SelectedIndexChanged"
                    CssClass="table table-striped table-bordered"
                    runat="server">
                    <Columns>
                        <asp:TemplateField HeaderText="First Name">
                            <ItemTemplate>
                                <asp:Label ID="lblstudFName" Font-Bold="true" ControlStyle-Width="200" Text='<%#Eval("stud_fname")%>'
                                    runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>

                         <asp:TemplateField HeaderText="Last Name">
                            <ItemTemplate>
                                <asp:Label ID="lblstudLName" Font-Bold="true" ControlStyle-Width="200" Text='<%#Eval("stud_lname")%>'
                                    runat="server" />
                            </ItemTemplate>
                        </asp:TemplateField>
                      
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:LinkButton ID="lbtnSelect" runat="server"
                                    CssClass="btn btn-outline-info " CommandName="Select"
                                    CausesValidation="false" Text="Select" />

                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

這是 onclick 選擇按鈕背后的代碼,我嘗試在網格視圖和數據庫中設置值。

   protected void gvs_stud_SelectedIndexChanged(object sender, EventArgs e)
    {
        string candidateType = colStudRegister.candiType;
        string studentFname = colStudRegister.sfname;
        string studentLname = colStudRegister.slname;
        string studentoname = colStudRegister.soname;
        string studentNic = colStudRegister.sNic;
        string studentDob = colStudRegister.dob;
        string street = colStudRegister.Street;
        string postalCode = colStudRegister.PostalCode;
        string locality = colStudRegister.Locality;
        string townVillage = colStudRegister.TownVillage;
        string college = colStudRegister.College;
        string rpFname = colStudRegister.rpFname;
        string rpLname = colStudRegister.rpLname;
        string rpNic = colStudRegister.rpNic;
        string rpContactNum = colStudRegister.ContactNumber;
        string rpemail = colStudRegister.Email;

       
        txtStudId.Text = (gvs_stud.DataKeys[gvs_stud.SelectedIndex].Value.ToString());
        TextBox1.Text = ((Label)gvs_stud.SelectedRow.FindControl("lblstudLName")).Text;
        studentFname = ((Label)gvs_stud.SelectedRow.FindControl("lblstudFName")).Text;
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;

        cmd.Parameters.AddWithValue("@sid", txtStudId.Text);
        cmd.CommandText = "SELECT * FROM tblStudent where stud_Id = @sid";
        SqlDataReader dr;
        con.Open();
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            studentNic= dr["stud_nid"].ToString();
        }
        con.Close();
    }

textbox1 不在控件中,我用它來測試我的 onclick 選擇按鈕是否正確,它是否顯示了對應的值。

但是當我嘗試使用控件文本框時,什么也沒有發生。

除了我看到的測試 TextBox1 之外,唯一的其他“控制文本框分配”是這一行:

txtStudId.Text = (gvs_stud.DataKeys[gvs_stud.SelectedIndex].Value.ToString());

在您提供的代碼中,沒有文本框 txtStudId。 您是否忘記在表單中實現文本框?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM