asp.net - obtenir de la valeur à partir d'asp boundfield et de stocker en base de données sql via le bouton cliquez sur?




textbox (2)

Je veux obtenir cette valeur de webform 1 (côté admin) quand on clique sur le bouton:

Voici mon code complet de viewcreditrequest:

 <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 derrière:

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();
    }

et transmettez-le à Webform 2 (côté client):

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

c'est ce que j'ai eu jusqu'à présent:

côté admin:

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

code derrière:

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

est-il possible d'obtenir la valeur creditrequest de boundfield et de la stocker dans la base de données?


Copiez le code ci-dessous EXACTEMENT comme je le montre et cela fonctionnera. Je viens de tester sur mon ordinateur:

.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 derrière:

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; }
}

Ici, vous pouvez faire deux choses 1.since vous utilisez Button, ajoutez une nouvelle ligne dans gridview comme ceci

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

et le code derrière est comme ça

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

et sur une autre page côté client obtenir la valeur de la chaîne de requête comme celle-ci

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

Et 2ème méthode et facile sera d'utiliser un lien hypertexte au lieu d'un bouton comme celui-ci

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






boundfield