2017-07-24 30 views
0

我有问题,在验证radUpload的事件中使用Telerik的radupload在ASP中的ListView EditItemTemplate.i我要检查一些要求,所以我需要的FindControl两个控制:radUpload和标签 为了这个,我我使用ItemDataBound事件listView 但问题是在这里,第一个ItemDataBound事件执行和之后,RadUpload验证事件将执行,因此RadUpload控制和标签控制保持空 我通过使用静态控制的方式处理这个,但我认为这不是个好主意。你有解决方案吗? 的另一个问题是使用静态我标签label.however和跟踪显示标签有文字,但在输出标签没见过如何访问控件的ListView EditItemTemplate中

<asp:ListView ID="LvAdminRing" runat="server" ItemPlaceholderID="ItemPlaceHolder" GroupPlaceholderID="GroupPlaceHolder" 
      OnItemEditing="LvAdminRing_ItemEditing" OnItemDataBound="onItemDataBound" OnItemUpdating="LvAdminRing_ItemUpdating"> 
      <LayoutTemplate> 
       <div> 
        <asp:PlaceHolder runat="server" ID="GroupPlaceHolder"></asp:PlaceHolder> 
       </div> 
      </LayoutTemplate> 
      <GroupTemplate> 
       <div> 
        <asp:PlaceHolder runat="server" ID="ItemPlaceHolder"></asp:PlaceHolder> 
       </div> 
      </GroupTemplate> 
      <ItemTemplate> 

       <div class="RadRingTileDIV col-lg-12" runat="server"> 
        <div class="row RadRingItemsDIV"> 

         <asp:Label ID="lblPrice" CssClass="CustDispBlock CustItemFonts" runat="server" Text='<%# Eval("XPrice")%>'></asp:Label> 
         <asp:Label ID="lblCode" CssClass="CustDispBlock CustItemFonts" runat="server" Text='<%# Eval("XCode") %>'></asp:Label> 
        </div> 
        <div class="row RadRingItemsDIV "> 
         <asp:ImageButton ID="ImgRingEdit" runat="server" CommandName="Edit" ImageUrl="~/Image/Admin/CommandsPic/Edit.gif" /> 
         <asp:ImageButton ID="ImgRingDel" runat="server" CommandName="Delete" ImageUrl="~/Image/Admin/CommandsPic/Delete.gif" /> 

        </div> 
       </div> 

      </ItemTemplate> 
      <EditItemTemplate> 

       <div class="RadRingTileDIV col-lg-12" runat="server"> 
        <div class="RadRingItemsDIV row"> 
         <img src="ksdla" class="AdminImg CustDispBlock" /> 
         <telerik:RadUpload ID="RupAdminRingPic" runat="server" AllowedFileExtensions=".png,.jpg,.jpeg,.jpe" AllowedMimeTypes="image/png,image/x-png,image/jpeg,image/pjpeg" 
          MaxFileInputsCount="1" MaxFileSize="52000" OverwriteExistingFiles="False" TargetFolder="~/Image/Products/Ring" 
          OnValidatingFile="RupAdminRingPic_ValidatingFile" ToolTip="انتخاب عکس جدید با پسوند های png،jpg،jpeg و jpe" ControlObjectsVisibility="CheckBoxes"> 
         </telerik:RadUpload> 
        </div> 
        <div class="row RadRingItemsDIV"> 
         <br /> 
         <asp:Button ID="Button1" runat="server" Text="test" CommandName="Update" /> 
        </div> 
        <div class="row RadRingItemsDIV"> 
         <br /> 
         <asp:Label ID="LblError" CssClass="CustDispBlock CustZ-Index" Visible="false" runat="server" Text=""></asp:Label> 
        </div> 
       </div> 
      </EditItemTemplate> 

     </asp:ListView> 



public static Label lblError; 

    public static RadUpload RuEditPic; 
    public static Label lblError; 

    protected void RupAdminRingPic_ValidatingFile(object sender, Telerik.Web.UI.Upload.ValidateFileEventArgs e) 
    { 
     //Label test = (Label)LvItems.FindControl("LblError"); 
     string[] AllowedFileExt = RuEditPic.AllowedFileExtensions; 
     foreach (string AllowedExt in AllowedFileExt) 
     { 
      if (e.UploadedFile.ContentLength > RuEditPic.MaxFileSize) 
      { 
       lblError.Text = "some error"; 
       lblError.Visible = true; 
      } 
     } 
    } 

    protected void onItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     int x = (e.Item as ListViewDataItem).DataItemIndex; 

     if (LvAdminRing.EditIndex == (e.Item as ListViewDataItem).DataItemIndex) 
     { 
      LvItems = LvAdminRing.Items as ListViewDataItem; 
      lblError = (e.Item.FindControl("LblError") as Label); 
      //errNoti = (e.Item.FindControl("LblError") as Label); 
      RuEditPic = (e.Item.FindControl("RupAdminRingPic") as RadUpload); 
     } 
    } 

回答

0

你应该试试这个。

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 

     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     if (dataItem.DisplayIndex == ListView1.EditIndex) 
     { 
     TextBox tb = e.Item.FindControl("tbFK_MenuID") as TextBox; 
     } 
    } 
} 
相关问题