get value from asp boundfield and store to sql database via button click?

拈花ヽ惹草 提交于 2019-12-11 11:34:05

问题


i want to get this value from webform 1 (admin side) when button is clicked:

here is my full viewcreditrequest code:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    CssClass="table table-hover table-striped" 
    onselectedindexchanged="GridView1_SelectedIndexChanged">
    <Columns>

           <asp:BoundField DataField="Username" HeaderText="Username" 
            SortExpression="Username" />

        <asp:BoundField DataField="LastName" HeaderText="LastName" 
            SortExpression="LastName" />

        <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
            SortExpression="FirstName" />

        <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" 
            SortExpression="CompanyName" />

        <asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress" 
            SortExpression="EmailAddress" />

        <asp:BoundField DataField="CompanyAddress" HeaderText="CompanyAddress" 
            SortExpression="CompanyAddress" />

        <asp:BoundField DataField="IncomeRange" HeaderText="IncomeRange" 
            SortExpression="IncomeRange" />

        <asp:BoundField DataField="CreditRequest" HeaderText="CreditRequest" 
            SortExpression="CreditRequest" />

        <asp:BoundField DataField="ContactNumber" HeaderText="ContactNumber" SortExpression="ContactNumber" />

        <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Approve" CommandName="Approve" CommandArgument='<%# Eval("CreditRequest") %>' />
                </ItemTemplate>
            </asp:TemplateField>

    </Columns>
</asp:GridView>

code behind:

protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["IslandGasAdminFM"] != null)
        {

            bindgrid();
            Label1.Text = "- Finance Manager";

        }
        else
        {
            Response.Write("<script>alert('Finance Manager credentials needed'); window.location.href='LogIn.aspx';</script>");
        }
    }
    public void bindgrid()
    {
        SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
        SqlCommand cmd = new SqlCommand("select * from CreditRequests ", conn);

        SqlDataAdapter da = new SqlDataAdapter("", conn);
        da.SelectCommand = new SqlCommand("select * from CreditRequests", conn);
        DataSet ds = new DataSet();
        da.Fill(ds, "data");
        GridView1.DataSource = ds.Tables[0].DefaultView;
        GridView1.DataBind();
    }

and pass it on to webform 2 (client side):

<asp:TextBox ID="txtCredit" runat="server"></asp:TextBox>

this is what i got so far:

admin side:

<asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="btnApprove" runat="server" Text="Approve" OnClick ="btnApprove_Click" />
                                </ItemTemplate>
                            </asp:TemplateField>

code behind:

protected void btnApprove_Click(object sender, EventArgs e)
    {
        //code for getting the boundfield "creditrequest" and if possible, store it in database for future use.
    }

is there any way to get the creditrequest value from boundfield and store it in database?


回答1:


Here you can do two thing's 1.since you are using Button, add a new row in gridview like this

<asp:TemplateField HeaderText="Actions">
    <ItemTemplate>
        <asp:Button CommandArgument='<%#Eval("CreditRequest") %>' runat="server" Text="View" ID="btnEdit" OnClick="btnEdit_OnClick"/>
      </ItemTemplate>
  </asp:TemplateField>

and the code behind is like this

 protected void btnEdit_OnClick(object sender, EventArgs e)
        {
            if (sender != null)
            {
                string id = ((Button)sender).CommandArgument.ToString();
                Response.Redirect("yourpagename.aspx?value=" + id);
            }
        } 

and on another page Client side get the query string value like this

string value = Request.QueryString["value"])

And 2nd and easy method will be to use hyperlink instead of button like this

 <asp:TemplateField HeaderText="Actions">
     <ItemTemplate>
        <asp:HyperLink runat="server" NavigateUrl='<%# Eval("CreditRequest", "~/yourpagename.aspx?value={0}") %>' Text="Edit" "></asp:HyperLink>
      </ItemTemplate>
   </asp:TemplateField>



回答2:


Copy the code below EXACTLY as I'm showing and it will work. I've just tested on my computer:

.ASPX:

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false">
            <Columns>
                <asp:BoundField DataField="Name" HeaderText="Name" />
                <asp:BoundField DataField="CreditRequest" HeaderText="Credit Request" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button runat="server" Text="Approve" CommandName="Approve" CommandArgument='<%# Eval("CreditRequest") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Code behind:

public partial class delete_me : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)//THIS IS IMPORTANT.GridView1_RowCommand will not fire unless you add this line
        {
            var p1 = new Person() { Name = "Person 1",CreditRequest="Credit Request 1" };
            var p2 = new Person() { Name = "Person 2",CreditRequest="Credit Request 2" };

            var list = new List<Person> { p1, p2 };
            GridView1.DataSource = list;
            GridView1.DataBind();
        }
    }

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        System.Diagnostics.Debugger.Break();

        if(e.CommandName == "Approve")
        {
            string creditRequest = e.CommandArgument as string;
        }
    }
}

public class Person
{
    public string Name { get; set; }
    public string CreditRequest { get; set; }
}


来源:https://stackoverflow.com/questions/37497123/get-value-from-asp-boundfield-and-store-to-sql-database-via-button-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!