2017-02-12 4 views
0

Я составляю список всех моих пользователей в gridview, который я покажу по умолчанию для тех, у кого нет профиля.Показать по умолчанию img в gridview

Я рассмотрел это решение, но я не могу заставить его работать, что я делаю неправильно.

Displaying a default image in gridview

Мой код Gridview управления

 <asp:Panel ID="pnlListeOverBruger" runat="server"> 
     <asp:GridView ID="gwListeOverBruger" CssClass="table table-bordered table-hover" OnRowDataBound="gwListeOverBruger_RowDataBound" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="fldId"> 
      <Columns> 
       <%-- profil billede --%> 
       <asp:TemplateField HeaderText="Billede" SortExpression="fldBrugernavn"> 
        <ItemTemplate>       
        <asp:Image ID="img" ImageUrl='../img/profil/<%#Eval("fldImg") %>' runat="server" style='width: 100px; overflow: hidden;'/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <%-- brugernavn --%> 
       <asp:TemplateField HeaderText="Brugernavn" SortExpression="fldBrugernavn"> 
        <EditItemTemplate> 
         <asp:TextBox ID="txtBrugernavn" runat="server" Text='<%# Bind("fldBrugernavn") %>' /> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="lblBrugernavn" runat="server" Text='<%# Bind("fldBrugernavn") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <%-- Email --%> 
       <asp:TemplateField HeaderText="Email" SortExpression="fldEmail"> 
        <EditItemTemplate> 
         <asp:TextBox ID="txtEmail" runat="server" Text='<%# Bind("fldEmail") %>' /> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="lblEmail" runat="server" Text='<%# Bind("fldEmail") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <%-- bruger rolle --%> 
       <asp:TemplateField HeaderText="Bruger rolle" SortExpression="fldRolle"> 
        <EditItemTemplate> 
         <asp:TextBox ID="txtBrugerRolle" runat="server" Text='<%# Bind("fldRolle") %>' /> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="lblBrugerRolle" runat="server" Text='<%# Bind("fldRolle") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <%-- Slette knappen --%> 
       <asp:CommandField HeaderText="Handling" ControlStyle-CssClass="btn btn-danger" ShowDeleteButton="True" /> 
      </Columns> 
      <PagerStyle CssClass="GridPager" /> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DBcmsListeOverBruger %>" DeleteCommand="DELETE FROM CmsBrugere WHERE (fldId = @original_fldId) AND (fldRolle_fk &gt; '1')" InsertCommand="INSERT INTO [CmsBrugere] ([fldBrugernavn]) VALUES (@fldBrugernavn)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT CmsBrugere.fldId, CmsBrugere.fldImg, CmsBrugere.fldBrugernavn, CmsBrugere.fldEmail, CmsBrugerRoller.fldBrugerId_fk, CmsBrugerRoller.fldRolle FROM CmsBrugere LEFT OUTER JOIN CmsBrugerRoller ON CmsBrugerRoller.fldId = CmsBrugere.fldRolle_fk" UpdateCommand="UPDATE [CmsBrugere] SET [fldBrugernavn] = @fldBrugernavn WHERE [fldId] = @original_fldId"> 
      <DeleteParameters> 
       <asp:Parameter Name="original_fldId" Type="Int32" /> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="fldBrugernavn" Type="String" /> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="fldBrugernavn" Type="String" /> 
       <asp:Parameter Name="original_fldId" Type="Int32" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
    </asp:Panel> 

Codebehind Pageload:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 


     foreach (GridViewRow gvr in gwListeOverBruger.Rows) 
     { 
      Image image = (Image)gvr.FindControl("img"); 

      if (image != null && image.ImageUrl == "") 
      { 
       image.ImageUrl = "../img/profil/default-billede/ingen-profil-billede.png"; 
      } 




     } 
    } 
} 

Codebehind OnRowDataBound:

protected void gwListeOverBruger_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     Image profilImg = (Image)e.Row.FindControl("img"); 

     if (profilImg != null && profilImg.ImageUrl == "") 
     { 
      profilImg.ImageUrl = "../img/profil/default-billede/ingen-profil-billede.png"; 
     } 
    } 
} 

ответ

0

Вы можете использовать тернарный оператор в самом элементе управления изображением, чтобы проверить, есть ли изображение, и если оно не отображается по умолчанию.

<asp:Image ID="img" runat="server" ImageUrl='<%# !string.IsNullOrEmpty(Eval("fldImg").ToString()) ? "../img/profil/" + Eval("fldImg") : "../img/profil/default-billede/ingen-profil-billede.png" %>' /> 

 Смежные вопросы

  • Нет связанных вопросов^_^