2015-08-11 3 views
0

У меня есть GridView на странице ASP (C#), которая содержит изображение в каждой строке. Я хочу, чтобы имитировать какое-то колесо большого пальца с помощью нескольких стрелок, позволяет пользователю выбирать изображение по своему выбору из изображений, хранящихся в базе данных сервера. Но я не хочу обновлять всю сетку/страницу каждый раз, когда пользователь нажимает на стрелку влево или вправо, чтобы увидеть следующее изображение. До сих пор я пробовал несколько вариантов UpdatePanel, но у меня не может быть обновлено это только изображение. Просто, чтобы дать представление, это разметка. Любая помощь оценивается.Обновить изображение внутри gridview с помощью updatepanel (или другого значения)

<div style="width:1200px; height:900px; margin:0 auto;"> 
     <form id="form1" runat="server" > 
      <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
     <asp:Label ID="lblTextType" runat="server" Text="Text type" style="z-index: 1; left: 422px; top: 200px; position: absolute; height: 25px; width: 126px; right: 1036px;" Font-Names="Verdana"></asp:Label> 


     <asp:GridView ID="listText" runat="server" style="z-index: 1; left: 566px; top: 284px; position: absolute; height: 160px; width: 397px; right: 621px;" Font-Names="Verdana" AutoGenerateColumns="False" ShowHeader="False" Font-Size="17pt"> 
      <Columns> 
       <asp:TemplateField HeaderText="itm" SortExpression="Value"> 
       <ItemTemplate> 
        <asp:TextBox ID="itemText" runat="server" OnTextChanged="OnTextChanged" Text='<%#Eval("text") %>' AutoPostBack="True" BorderWidth="0" Width="385px" Font-Size="Medium" ></asp:TextBox> 
       </ItemTemplate> 
       </asp:TemplateField> 


       <asp:TemplateField HeaderText="leftArrow" SortExpression="Value"> 
        <ItemTemplate> 
         <asp:ImageButton ID="leftArrow" runat="server" OnClick="onLeftArrow" Width="6px" ImageUrl="Images\LeftArrow.png" ></asp:ImageButton> 
        </ItemTemplate> 
       </asp:TemplateField> 

<!-- The image to be refreshed each time an arrow is pressed --> 
        <asp:Image runat="server" ImageUrl='<%#Eval("imagename") %>' ControlStyle-Height="35px" ControlStyle-Width="35px"></asp:Image> 




      <asp:TemplateField HeaderText="RightArrow" SortExpression="Value"> 
       <ItemTemplate> 
        <asp:ImageButton ID="RightArrow" runat="server" OnClick="onRightArrow" Width="6px" ImageUrl="Images\RightArrow.png" ></asp:ImageButton> 
       </ItemTemplate> 
      </asp:TemplateField> 

      </Columns> 
      <RowStyle BorderStyle="None" Height="17px" Wrap="True" /> 
     </asp:GridView> 
    </div> 

ответ

0

Это kooks, как я решил. У меня действительно были некоторые улучшения, но я не ожидал этого, но это то, что я сделал. В разметке, я инкапсулированный Bothe изображения и стрелку:

<asp:TemplateField HeaderText="Command"> 
     <ItemTemplate> 
      <asp:UpdatePanel ID="gridUpdatePanel" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <asp:Image ID="imagename" runat="server" ImageUrl='<%#Eval("imagename") %>' ControlStyle-Height="35px" ControlStyle-Width="35px"></asp:Image> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </ItemTemplate> 
    </asp:TemplateField> 


    <asp:TemplateField HeaderText="RightArrow" SortExpression="Value"> 
     <ItemTemplate> 
      <asp:UpdatePanel ID="updatepanel_ra" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
       <ContentTemplate> 
        <asp:ImageButton ID="RightArrow" runat="server" OnClick="onRightArrow" Width="6px" ImageUrl="Images\RightArrow.png" ></asp:ImageButton> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </ItemTemplate> 
    </asp:TemplateField> 

В С # код, единственным способом, чтобы обновить изображение был доступ со стрелкой ID, находя свое название внутри сетки строки:

protected void onRightArrow(object sender, ImageClickEventArgs e) 
{ 
    ImageButton thisImage = (ImageButton)sender; 
    GridViewRow currentRow = (GridViewRow)thisImage.Parent.Parent.Parent.Parent; 
    string filenme = "somefilename.png"; 
    Control cc = currentRow.FindControl("imagename"); 
    if (cc != null) 
    { 
     Image imagename = (Image)cc; 
     imagename.ImageUrl = filenme; 
     //gridUpdatePanel 
     Control upd = currentRow.FindControl("gridUpdatePanel"); 
     UpdatePanel updpnl = (UpdatePanel)upd; 
     updpnl .Update(); 
    } 
} 
Смежные вопросы