Member 13174280 Ответов: 4

Создать команду во время выполнения


Я должен создать серию ImageButton внутри DIV

<div style="float:left; width:105px">
  <asp:ImageButton ID="ImageButton3" runat="server" ImageAlign="Middle" ImageUrl="~/Immagini/Arredi/thumbnails/File_-09.jpg" Width="100px" OnClick="ImageButton3_Click1"/>A1
</div>


HtmlGenericControl может создавать Html-теги, но не asp. net

System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
       dynDiv.ID = "dynDivCode";
       dynDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Gray");
       dynDiv.Style.Add(HtmlTextWriterStyle.Height, "20px");
       dynDiv.Style.Add(HtmlTextWriterStyle.Width, "300px");
       dynDiv.InnerHtml = "I was created using Code Behind";
       this.Controls.Add(dynDiv);


есть ли способ создать ImageButton и свойства ?

Что я уже пробовал:

Div я могу его создать

System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");


но ImageButton внутри Div ?

4 Ответов

Рейтинг:
2

F-ES Sitecore

<asp:Panel style="float:left; width:105px" runat="server" ID="myPanel">
    <asp:ImageButton ID="ImageButton3" runat="server" ImageAlign="Middle" ImageUrl="~/Immagini/Arredi/thumbnails/File_-09.jpg" Width="100px" OnClick="ImageButton3_Click"/>A1
</asp:Panel>


protected void Page_Load(object sender, EventArgs e)
{
        ImageButton newButton = new ImageButton();

        newButton.ID = "DynamicImageButton" + i.ToString();
        newButton.ImageAlign = ImageAlign.Middle;
        newButton.ImageUrl = "~/Immagini/Arredi/thumbnails/File_-09.jpg"; // change as needed
        newButton.Width = 100;
        newButton.Click += NewButton_Click;
        newButton.CommandArgument = i.ToString();

        myPanel.Controls.Add(newButton);

        Literal newLiteral = new Literal();

        newLiteral.Text = "Button " + i.ToString();

        myPanel.Controls.Add(newLiteral);
}

private void NewButton_Click(object sender, ImageClickEventArgs e)
{
    ImageButton b = (ImageButton)sender;

    System.Diagnostics.Debug.WriteLine("Button " + b.CommandArgument + " was clicked");
}


Dotnet_Dotnet

в окне кода

кнопки установки.контроля.добавить( myPanel)

Рейтинг:
2

debasish mishra

Не просто копируйте и вставляйте.Существует хак, который вы можете сделать с помощью CSS, и он поможет вам правильно расположить кнопки изображений внутри div.

c# - кнопка изображения внутри позиции div - переполнение стека[^]


Рейтинг:
2

Member 13174280

по решению 2

newButton.Click += NewButton_Click;


при вводе точки останова на NewButton_Click код не проходит

private void NewButton_Click(object sender, ImageClickEventArgs e)
{
    ImageButton b = (ImageButton)sender;

    System.Diagnostics.Debug.WriteLine("Button " + b.CommandArgument + " was clicked");

I need ImageUrl to visulize in another control
ex: ImageFromThumb.ImageUrl = "url"

}


Для выполнения операции нажмите на изображение, я должен как минимум пройти Url_изображения

------------- другая возможность
Я могу творить

protected override void OnInit(EventArgs e)
    {
        //create a new server control  
        ImageButton image = new ImageButton();
        //we must specify an unique ID of that control   
        image.ID = "image1";

        image.ImageUrl = "~/Immagini/Arredi/thumbnails/File_55Frecce-106.jpg";
        image.Width = 100;
        image.OnClientClick = "ImgShow()";  

        //has no effect
        // image.OnClientClick = "ImgShow(image.ImageUrl)"
        
        //create a new LiteralControl  
        LiteralControl createDiv = new LiteralControl("<div>");
        //add both of them into the page  
        Page.Form.Controls.Add(createDiv);
        Page.Form.Controls.Add(image);
        LiteralControl endDiv = new LiteralControl("</div>");
        Page.Form.Controls.Add(endDiv);
        base.OnInit(e);
    }


и в файле .aspx

<script type="text/javascript">
    function ImgShow(src)
    {
        var img = document.createElement("img");
        img.src = src;
        img.width = width;
        img.height = height;
        img.alt = alt;

        // This next line will just add it to the <body> tag
        document.body.appendChild(img);
    }

</script>


цель состоит в том, чтобы иметь n ImageButton и нажать на дисплей на элементе управления ImageButton.

проблема заключается в том, чтобы передать параметр (ImageUrl) функции ImgShow()


Рейтинг:
1

Member 13174280

Я решил использовать DataList с ImageButton

<!-- DataList Images -->
        <div style="overflow-x:scroll; overflow-y:no-content; height:280px"
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <ContentTemplate>
                  <!-- RepeatColumns="0" DataList Horizontal -->
                 <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Table" RepeatColumns="0">
                          
                   <ItemTemplate>
                    <td>                       
                       <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# Container.DataItem %>' Height="200px" OnClick="ImageButton1_Click" ImageAlign="Middle" EnableTheming="False" CssClass="CCSImageButton"/>
                    </td>
                    </ItemTemplate>
                 </asp:DataList>
              </ContentTemplate>             
            </asp:UpdatePanel>
        </div>   


и cs файл

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
         ...... other operation
    }