簡體   English   中英

如何添加 ASP.NET 控件在 Html 中標記並在 .cs 上的 .FindControl() 方法中分配它們?

[英]How to add ASP.NET control for <i></i> tags in Html and assign them inside .FindControl() method on .cs?

有誰知道如何為<i></i>標簽添加 ASP.NET 控件?
我正在尋找與<i> Html 標記等效的 ASP.NET 控件

就我而言,我還想在.cs文件中為它實現 .FindControl() 方法。
這是代碼的一部分..


例子.axcs

<asp:Panel id="forDiv" CssClass="input-group colorpicker-component" runat="server">
                        <asp:TextBox ID="txtHeree" class="form-control" runat="server" Style="width: auto"></asp:TextBox>
                        <asp:Panel CssClass="input-group-append" runat="server">
                            <asp:Label CssClass="input-group-addon input-group-text" runat="server"><i></i></asp:Label>
                        </asp:Panel>
</asp:Panel>


從上面的代碼中,我實現的 FindControl 方法是這樣的,


例子.ascx.cs

TextBox txtVal = e.Row.FindControl("txtHeree") as TextBox;
Panel txtVal = e.Row.FindControl("forDiv") as Panel;

等等..


我目前的問題是,我仍然找不到<i></i>標記的等效 ASP.NET 控件以及它的 .FindControl() 方法。
當然,我已經閱讀了 Stackoverflow 和 Microsoft Docs 中對另一個 QnA 論壇的引用:
ASP.NET 控件到 HTML 標記等效

https://docs.microsoft.com/en-us/troubleshoot/developer/webapps/aspnet/development/server-controls

<i></i>標簽控件的任何建議、答案或有效代碼都將非常...非常有幫助。

謝謝你。

當然,如果你添加一個“id”標簽,並且 runat=server,那么那個“i”就變成了一個服務器端控件。

這樣做允許在列表視圖、中繼器等中使用。

所以,這樣做:

        <i id="MyIguy" runat="server"></i>
        <br />

        <asp:Button ID="Button1" runat="server" Text="Button" 
            CssClass="btn" OnClick="Button1_Click" />

因此,按鈕后面的代碼如下:

    protected void Button1_Click(object sender, EventArgs e)
    {
        MyIguy.InnerText = "this is fun";

    }

我們在運行時看到了這一點:

在此處輸入圖像描述

假設我們使用gridview、repeater 等?

說這個標記,我們剛剛加入(帶有 id 和 runat=server)。

相當多地使該控件的工作、外觀和感覺與任何其他服務器端 asp.net 控件一樣。

比如說,這個標記和網格視圖(對於查找控件示例)。

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
            DataKeyNames="ID" CssClass="table" >
            <Columns>
                <asp:TemplateField HeaderText="Hotel Name"> <ItemTemplate>
                        <asp:Label ID="txtHotel" runat="server" Text='<%# Eval("HotelName") %>' ></asp:Label>
                    </ItemTemplate> </asp:TemplateField>

                <asp:TemplateField HeaderText="City"> <ItemTemplate>
                        <asp:Label ID="txtCity" runat="server" Text='<%# Eval("City") %>' ></asp:Label>
                    </ItemTemplate> </asp:TemplateField>

                <asp:TemplateField HeaderText="Description"> <ItemTemplate>
                        <i id="Descript" runat="server"> <%# Eval("Description") %>  </i>
                    </ItemTemplate> </asp:TemplateField>

                <asp:TemplateField HeaderText="View"> <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" Text="View" 
                        CssClass="btn" OnClick="Button1_Click" />
                    </ItemTemplate> </asp:TemplateField>

            </Columns>
        </asp:GridView>

要加載的代碼:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.DataSource = General.MyRst("SELECT * FROM tblHotelsA ORDER BY HotelName");
            GridView1.DataBind();
        }
    }

我們現在有了這個:

在此處輸入圖像描述

而我們的查看按鈕點擊代碼,這樣說:

    protected void Button1_Click(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        GridViewRow gRow = btn.NamingContainer as GridViewRow;

        int? PKID = GridView1.DataKeys[gRow.RowIndex]["ID"] as int?;

        Debug.Print("pk data base row id = " + PKID.ToString());
        Debug.Print("Row click index = " + gRow.RowIndex);

        // get hotel name
        Label txtHotel = gRow.FindControl("txtHotel") as Label;
        Debug.Print("Hotel name = " + txtHotel.Text);

        // get our <i> guy
        HtmlGenericControl myIthing = gRow.FindControl("Descript") as HtmlGenericControl;
        Debug.Print("Our i guy = " + myIthing.InnerText);

    }

輸出 :

在此處輸入圖像描述

因此,大多數這樣的控件 - 添加一個“id”和 runat="server",在這一點上,它的行為與大多數其他 asp.net 控件非常相似。

暫無
暫無

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

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