簡體   English   中英

如何在ASP.NET C#WebForm中的文本框和下拉列表的GridView頁腳行中獲取值

[英]How Can I get the value in the gridview footer row of textbox and dropdownlist in asp.net c# webform

我想獲取在文本框中編寫的內容,但始終獲取“”字符串。 當我在textboxT_T輸入其他內容時,找不到值。

這是Gridview代碼:

<div style="margin:0 auto;width:900px;">
        <asp:Label ID="USER_header" runat="server"  
            Text="一.先新增用戶" CssClass="=text-center"></asp:Label>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowFooter = "true" Width="900" OnDataBound = "OnDataBound" OnRowCommand="GridView1_RowCommand">
        <Columns>
   <asp:TemplateField HeaderText="工號" SortExpression="BS_ID">
        <ItemTemplate>
            <asp:Label ID="lblBSID" runat="server" 
            Text='<%# Eval("BS_ID") %>'/>
        </ItemTemplate>
                <FooterTemplate>
            <asp:TextBox ID="BS_ID_tb" runat="server"/>
        </FooterTemplate>
                </asp:TemplateField>
     <asp:TemplateField HeaderText="中文姓名" SortExpression="BS_NAME_CHT">
        <ItemTemplate>
            <asp:Label ID="lblBS_NAME_CHT" runat="server" 
            Text='<%# Eval("BS_NAME_CHT") %>'></asp:Label>
        </ItemTemplate>
                <FooterTemplate>
            <asp:TextBox ID="BS_NAME_CHT_tb" runat="server"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>
            <asp:TemplateField HeaderText="英文姓名" SortExpression="BS_NAME_ENG">
        <ItemTemplate>
            <asp:Label ID="lblBS_NAME_ENG" runat="server" 
            Text='<%# Eval("BS_NAME_ENG") %>'></asp:Label>
        </ItemTemplate>
                <FooterTemplate>
            <asp:TextBox ID="BS_NAME_ENG_tb" runat="server" ></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>
            <asp:TemplateField HeaderText="部門" SortExpression="BS_DEPT">
        <ItemTemplate>
            <asp:Label ID="lblBS_DEPT" runat="server" 
            Text='<%# Eval("BS_DEPT") %>'></asp:Label>
        </ItemTemplate>
                <FooterTemplate>
            <asp:DropDownList ID="DropDownList1" Width="200" runat="server">
    </asp:DropDownList>
        </FooterTemplate> 
    </asp:TemplateField>
            <asp:TemplateField>
                <FooterTemplate>
                    <asp:LinkButton ID="btnInsert" runat="server"  
            onclick="lbInsert_Click" Text="新增" CommandName="Insert"></asp:LinkButton>
                </FooterTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>`

這是完整的代碼:

        private DataSet _dataSet;
        private DataSet _dataSetHKTEL;
        private DataSet _datasetHKMOBILE;
        private string _value;
        protected void Page_Load(object sender, EventArgs e)
        {
            ShowData();
            GridView1.FooterRow.Visible = false;
            lblinsertuser.Visible = false;
            lbCancelSave.Visible = false;
            //if (Session["key_pass"] == null)
            //{
            //    Response.Write("<script>alert('YOUR ACCESS DENY! 你沒有權限進入此頁面');location.href='Default.aspx';</script>");
            //}
        }

        private void Viewtable()
        {
            using (SqlConnection conn = new SqlConnection(this._connectionString))
            {

                string query = "SELECT TOP 2 BS_ID,BS_NAME_CHT,BS_NAME_ENG,BS_DEPT FROM BS_USER  ORDER BY 1 DESC ";
                SqlCommand cmd = new SqlCommand(query, conn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd);
                DataTable finaldata = this.GenerateDataTable();
                conn.Open();
                da1.Fill(finaldata);
                this._dataSet = new DataSet();
                this._dataSet.Tables.Add(finaldata);
                conn.Close();
                da1.Dispose();
            }
        }
        private void ViewItnlHKTel()
        {
            using (SqlConnection conn = new SqlConnection(this._connectionString))
            {

                string query = "SELECT TOP 2 DA_TEL_NO,DA_USER FROM DA_ITNL_HK_TEL  ORDER BY 1 DESC ";
                SqlCommand cmd = new SqlCommand(query, conn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd);
                DataTable finaldata = this.GenerateTable();
                conn.Open();
                da1.Fill(finaldata);
                this._dataSetHKTEL = new DataSet();
                this._dataSetHKTEL.Tables.Add(finaldata);
                conn.Close();
                da1.Dispose();
            }
        }
        private void ViewITNLHKMOBILE()
        {
            using (SqlConnection conn = new SqlConnection(this._connectionString))
            {

                string query = "SELECT TOP 2 DA_PHONE_NO,DA_USER FROM DA_HK_MOBILE ORDER BY 1 DESC ";
                SqlCommand cmd = new SqlCommand(query, conn);
                SqlDataAdapter da1 = new SqlDataAdapter(cmd);
                DataTable finaldata = this.GenerateMOBILE_HK();
                conn.Open();
                da1.Fill(finaldata);
                this._datasetHKMOBILE = new DataSet();
                this._datasetHKMOBILE.Tables.Add(finaldata);
                conn.Close();
                da1.Dispose();
            }
        }
        private DataTable GenerateDataTable()
        {
            DataTable table = new DataTable();
            table.Columns.Add("BS_ID", typeof(string));
            table.Columns.Add("BS_NAME_CHT", typeof(string));
            table.Columns.Add("BS_NAME_ENG", typeof(string));
            table.Columns.Add("BS_DEPT", typeof(string));

            return table;
        }
        private DataTable GenerateTable()
        {
            DataTable table = new DataTable();
            table.Columns.Add("DA_USER", typeof(string));
            table.Columns.Add("DA_ITNL_HK_TEL", typeof(string));

            return table;
        }
        private DataTable GenerateMOBILE_HK()
        {
            DataTable table = new DataTable();
            table.Columns.Add("DA_USER", typeof(string));
            table.Columns.Add("DA_PHONE_NO", typeof(string));

            return table;
        }
        private void ShowData()
        {
            Viewtable();
            GridView1.DataSource = this._dataSet;
            GridView1.DataBind();
            ViewItnlHKTel();
            ADD_HK_TEL.DataSource = this._dataSetHKTEL;
            ADD_HK_TEL.DataBind();
            ViewITNLHKMOBILE();
            ADD_HK_MOBILE.DataSource = this._datasetHKMOBILE;
            ADD_HK_MOBILE.DataBind();
        }


        protected void lbladd_Click(object sender, EventArgs e)
        {
            //TextBox id = GridView1.FooterRow.FindControl("BS_ID_tb") as TextBox;
            ////string strBS_ID = (GridView1.FooterRow.FindControl("BS_ID_tb") as TextBox).Text;
            //DropDownList DEPT_ddl = GridView1.FooterRow.FindControl("DropDownList1") as DropDownList;
            ////string strBS_ID = BS_ID_tb.Text;
            ////string strBS_NAME_CHT = BS_NAME_CHT_tb.Text;
            ////string strBS_NAME_ENG = BS_NAME_ENG.Text;
            //string strBS_DEPT = DEPT_ddl.SelectedItem.Value;

            ////using (SqlConnection conn = new SqlConnection(this._connectionString))
            ////{

            ////    string query = "INSERT INTO BS_USER(BS_ID , BS_NAME_CHT , BS_NAME_ENG , BS_DEPT) VALUES (@BS_ID , @BS_NAME_CHT , @BS_NAME_ENG , @BS_DEPT)";
            ////    SqlCommand cmd = new SqlCommand(query, conn);
            ////    cmd.Parameters.Clear();
            ////    cmd.Parameters.AddWithValue("@BS_ID", strBS_ID);
            ////    cmd.Parameters.AddWithValue("@BS_NAME_CHT", strBS_NAME_CHT);
            ////    cmd.Parameters.AddWithValue("@BS_NAME_ENG", strBS_NAME_ENG);
            ////    cmd.Parameters.AddWithValue("@BS_DEPT", strBS_DEPT);

            ////        conn.Open();
            ////        cmd.ExecuteReader();
            ////        conn.Close();
            ////        //Response.Redirect("");
            ////}
        }

        protected void lbInsert_Click(object sender, EventArgs e)
        {
            GridView1.FooterRow.Visible = true;
            lblinsertuser.Visible = true;
            lbCancelSave.Visible = true;
            lbInsert.Visible = false;
        }

        protected void lbCancelSave_Click(object sender, EventArgs e)
        {
            GridView1.FooterRow.Visible = false;
            lbInsert.Visible = true;
        }
        DataTable Selectindex()
        {
            DataTable dt = new DataTable();
            try
            {
                using (SqlConnection conn = new SqlConnection(this._connectionString))
                {
                    using (SqlCommand cmd = new SqlCommand("SELECT '請選擇部門' AS BS_NAME , '000' AS BS_ID UNION SELECT BS_NAME , BS_ID FROM BS_DEPT ORDER BY BS_ID ASC", conn))
                    {
                        conn.Open();
                        SqlDataAdapter sda = new SqlDataAdapter(cmd);
                        sda.Fill(dt);
                    }
                }
            }
            catch (SqlException exc)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + exc.Message + "');", true);
            }
            catch (Exception exc)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + exc.Message + "');", true);
            }
            finally
            {

            }

            return dt;
        }
        protected void OnDataBound(object sender, EventArgs e)
        {
            DropDownList DEPT_ddl = GridView1.FooterRow.FindControl("DropDownList1") as DropDownList;
            DEPT_ddl.DataSource = Selectindex();
            DEPT_ddl.DataTextField = "BS_NAME";
            DEPT_ddl.DataValueField = "BS_ID";
            DEPT_ddl.DataBind();

        }
        protected void lbSave_Click(object sender, EventArgs e)
        {


        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Insert",StringComparison.OrdinalIgnoreCase))
            {
                GridView GridView1= (GridView)sender;
                TextBox BS_ID_tb = (TextBox)GridView1.FooterRow.FindControl("BS_ID_tb");
                string str_BS_ID = BS_ID_tb.Text;
                TextBox BS_NAME_CHT_tb = (TextBox)GridView1.FooterRow.FindControl("BS_NAME_CHT_tb");
                string str_BS_NAME_CHT = BS_NAME_CHT_tb.Text;
                TextBox BS_NAME_ENG_tb = (TextBox)GridView1.FooterRow.FindControl("BS_NAME_ENG_tb");
                string str_BS_NAME_ENG_tb = BS_NAME_ENG_tb.Text;
                DropDownList DEPT_ddl = (DropDownList)GridView1.FooterRow.FindControl("DropDownList1");
                string str_DEPT_value = DEPT_ddl.SelectedItem.Value;

                InsertData(str_BS_ID, str_BS_NAME_CHT, str_BS_NAME_ENG_tb, str_DEPT_value);
                GridView1.ShowFooter = false;
                ShowData();
                GridView1.FooterRow.Visible = false;
                lblinsertuser.Visible = false;
                lbCancelSave.Visible = false;

            }
        }
        private void InsertData(string BS_ID, string BS_NAME_CHT, string BS_NAME_ENG, string BS_DEPT)
        {
            using (SqlConnection conn = new SqlConnection(this._connectionString))
            {
                conn.Open();
                string sql = String.Format("Insert into BS_USER VALUES('{0}','{1}','{2}','{3}')", BS_ID, BS_NAME_CHT, BS_NAME_ENG, BS_DEPT);
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
            }
        }
    }
}

查看狀態的目的很簡單:

它可以在回發之間保持狀態。

這就是為什么在gridview中獲得初始值(如空字符串)的原因。 設置屬性EnableViewState="false"強制通過重新綁定控件而不是從viewstate來獲取數據。 要了解更多視圖狀態, 請參見此處

暫無
暫無

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

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