簡體   English   中英

ASP.NET在代碼后面發送變量

[英]ASP.NET Send variable in code behind

**ASPX CODE** this is the aspx code
<% for (int i = 0; i < pricePageObj.cartItemsgetset; i++)
                { %>
            <div class="row">
                <div class="col-md-1 ">
                    <% Response.Write(i + 1); %>
                </div>
                <div class="col-md-2 ">
                    <% Response.Write(svcID[i]); %>
                </div>
                <div class="col-md-2 ">
                    <% Response.Write(svcName[i]); %>
                </div>
                <div class="col-md-3 ">
                    <% Response.Write(svcDesc[i]); %>
                </div>
                <div class="col-md-2 ">
                    <% Response.Write(svcCharges[i]); %>
                </div>
                <div class="col-md-1 ">
                    <asp:Button CssClass="btn btn-danger" runat="server" Text="Remove"  CommandArgument="dont know how to pass i here" OnCommand="onRemove" />
                </div>
            </div>
            <%} %>

假設i = 0; i <5; 我++。 因此for循環將進行5次。 所以我想在后面的代碼中將i作為參數發送,以讀取i的值。 后面的C#CODE代碼

public void onRemove(object sender, CommandEventArgs e)
    {
        try
        {
            string indexx = Convert.ToString(e.CommandArgument);
            System.Diagnostics.Debug.WriteLine("String index = " + indexx);
        }
        catch (Exception ex)
        {

        }


    }

我想在后面的代碼中發送“ i”索引。 有什么幫助嗎?
當我在按鈕上點擊,我想讀的是ionRemove事件。 有什么幫助嗎?

這通常是我們在ASP.NET Web窗體的Bootstrap div中顯示集合的方式。 如果要操縱單個行,則使用ItemDataBound事件。

與原始問題相比,似乎有很多代碼,但這是ASP.NET Web窗體中的推薦方法。

在此處輸入圖片說明

<asp:ListView runat="server" ID="ListView1" 
    ItemPlaceholderID="ItemPlaceholder"
    OnItemDataBound="ListView_ItemDataBound">
    <LayoutTemplate>
        <asp:Panel runat="server" ID="ItemPlaceholder"></asp:Panel>
        <asp:DataPager runat="server" ID="DataPager" PageSize="3">
            <Fields>
                <asp:NumericPagerField ButtonCount="5" PreviousPageText="<" NextPageText=">" />
            </Fields>
        </asp:DataPager>
    </LayoutTemplate>        
    <ItemTemplate>
        <div class="row">
            <div class="col-md-1">
                <%# Eval("Id") %>
            </div>
            <div class="col-md-2">
                <%# Eval("Name") %>
            </div>
            <div class="col-md-1">
                <asp:Button CssClass="btn btn-danger" runat="server" Text="Remove" 
                    CommandArgument='<%# Eval("Id") %>' ID="RemoveButton" 
                    OnCommand="RemoveButton_Command" />
            </div>
        </div>
    </ItemTemplate>
</asp:ListView>

背后的代碼

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public partial class About : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ListView1.DataSource = new List<User>
            {
                new User {Id = 1, Name = "John"},
                new User {Id = 2, Name = "Marry"},
                new User {Id = 3, Name = "Nancy"},
                new User {Id = 4, Name = "Eric"},
            };
            ListView1.DataBind();
        }
    }

    protected void RemoveButton_Command(object sender, CommandEventArgs e)
    {
        int id = Convert.ToInt32(e.CommandArgument);

    }

    protected void ListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            User user = e.Item.DataItem as User;
        }
    }
}
<% Response.Write(i + 1); %>

通過這樣做,您將i傳遞給Response.Write方法。

您應該能夠在后面的代碼中編寫一個方法。

示例方法后面的代碼:

protected int Foo(int bar){
    //do something with bar

    return bar;
}

您現在應該可以在.aspx頁上執行此操作:

<% Response.Write(Foo(1) + 1); %>

通過將以下行放在頁面頂部,用頁面名稱替換MyCoolPage,可以訪問代碼中的所有方法。 但是,在創建Web表單頁面時,應該自動為您添加以下行:

<%@ Page CodeBehind="MyCoolPage.aspx.cs" Inherits="MyCoolPage" Language="C#" %>

代替執行按鈕操作,只需添加一個OnClick事件而不是現在執行的操作,如下所示:

<asp:Button CssClass="btn btn-danger" runat="server" Text="Remove" OnClick="DoSomethingCool(i) />

DoSomethingCool:

protected void DoSomethingCool(int index){
    try
    {
        System.Diagnostics.Debug.WriteLine("index = " + 
         index);
    }
    catch (Exception ex)
    {

    }
}

暫無
暫無

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

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