^_^

Nếu hướng tới các vì sao thì ít nhất ta cũng sẽ đến được các tầng mây !

Get value from Telerik popup Form ASP.net


Cách Tạo popup trong ASP.net với Telerik lấy giá trị từ popup trả về mainForm

Trang chính *.jspx:
Ta sử dụng các hàm javascript sau:
    <script language="javascript" type="text/javascript" >

        //Hàm trả về kết quả từ popup được định nghĩa khi khai báo RadWindow
        function CloseMaLoaiDuToan(oWnd, args) {
            //get the transferred arguments
            var arg = args.get_argument();
            if (arg) {
                var maLoaiDuToan = arg.txtMaLoaiDuToan;
            //Cái ctl00_ContentPlaceHolder1_txtMaLoaiDT này là của TextBox 
             đã được biên dịch ra HTML rồi nên phải view suorce mới thấy đc (jscrpt củ chuối :p)
                document.getElementById("ctl00_ContentPlaceHolder1_txtMaLoaiDT").value = maLoaiDuToan;
            }
        }
        //Hàm gọi tới sự kiện mở popup khi click vào button
        function openMaLoaiDuToan() {
            var oWnd = radopen("popupLoaiDuToan.aspx", "RadWindow1");
        }
    </script> 
Ta khai báo các popup ở đây :
    <fieldset>
     <telerik:RadFormDecorator  ID="RadFormDecorator2" runat="server" Skin="Sunset" />
     <telerik:RadWindowManager  ID="RadWindowManager1" ShowContentDuringLoad="false" VisibleStatusbar="false"
        ReloadOnShow="true" runat="server" Skin="Sunset">
        <Windows>
            <telerik:RadWindow ID="RadWindow1"  Modal="true"  AutoSize="true" OnClientClose="CloseMaLoaiDuToan"
                NavigateUrl="popupPhongBan.aspx">
            </telerik:RadWindow>
        </Windows>
     </telerik:RadWindowManager>
   </div>
 </fieldset>

Sự kiện popup được gọi khi click vào button:
<asp:Button id="cmdMaLoaiDT" runat="server" Width="25px" Text="..." 
OnClientClick="javascript:openMaLoaiDuToan(); return false;" TabIndex="3">
</asp:Button></td>


//----------------------------------------------------------------------------
Tạo 1 trang jspx như bình thường cho popup
Trong file popup :
 *.jspx :
Ta sử dụng các hàm javascript sau (cho vào codeblock):
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
              <script  type="text/javascript" >
              //Hàm lấy giá trị của RadWinDow ta đang giữ
                  function GetRadWindow() {
                      var oWindow = null;
                      if (window.radWindow) oWindow = window.radWindow;
                      else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
                      return oWindow;
                  }

                  function AdjustRadWidow() {
                      setTimeout(function() { GetRadWindow().autoSize(true) }, 500);
                  }
             //Hamf trar vef gias trị cho form chinhs từ popup
                  function returnToParent(maLoaiDuToan) {
                      //create the argument that will be returned to the parent page
                      var oArg = new Object();
                      //biến này sẽ được trả về cho  txtmaloaidutoan của form chính
                      oArg.txtMaLoaiDuToan = maLoaiDuToan;
                      //get a reference to the current RadWindow
                      var oWnd = GetRadWindow();
                      //Close the RadWindow and send the argument to the parent page
                          oWnd.close(oArg);
                  }
    </script>

    </telerik:RadCodeBlock>


Giả sử ta muốn lấy giá trị của một record được bin trên 1 dòng của Grid ta làm như sau :
Tạo một cột là GridButtonColumn ButtonType="LinkButton" có thể cho thêm hình ảnh vào cho đẹp (:D)

         <telerik:RadGrid ID="grvLoaiDT" runat="server" OnItemDataBound="grvLoaiDT_ItemDataBound"
             AllowSorting="True" AutoGenerateColumns="False" GridLines="None"      
                 Skin="Sunset"  
                 ShowFooter="True"  
                 PageSize="10" AllowPaging="True" >
              <PagerStyle Mode="NextPrevAndNumeric" />
              <MasterTableView  width="100%" commanditemdisplay="Top" datakeynames="Id" 
              horizontalalign="NotSet" autogeneratecolumns="False">
              <RowIndicatorColumn>
              <HeaderStyle Width="20px"></HeaderStyle>
              </RowIndicatorColumn>

              <ExpandCollapseColumn>
              <HeaderStyle Width="20px"></HeaderStyle>
              </ExpandCollapseColumn>
              <Columns>
                  <telerik:GridButtonColumn UniqueName="BtnReturn" ButtonType="LinkButton" HeaderText="Chọn" 
                  Text="&lt;img src='/Images/apply.gif' border='0'&gt;" >
                  </telerik:GridButtonColumn>

                  <telerik:GridBoundColumn DataField="MaLoaiDuToan" HeaderText="Mã Loại" 
                       UniqueName="MaLoaiDuToan" >
                              
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="TenDuToan" HeaderText="Tên Loại Dự Toán" 
                       UniqueName="TenDuToan">
                    </telerik:GridBoundColumn>      
            </Columns>
            
            </MasterTableView>
            <ClientSettings EnableRowHoverStyle="true">
               <Selecting AllowRowSelect="True" />
            </ClientSettings>
            
         </telerik:RadGrid> 

Ta nhúng mã script vào linkButton trong file codebehide *.cs của popup như sau để gọi sự kiện click và trả về giá trị cho mainForm:

        protected void grvLoaiDT_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                GridDataItem item = (GridDataItem)e.Item;
                LinkButton lnkbtn = (LinkButton)item["BtnReturn"].Controls[0];

               //Lấy giá trị của dòng mà bạn muốn và truyền vào returnToParent 
                String maLoaiDuToan = (e.Item as GridDataItem)["MaLoaiDuToan"].Text;
                lnkbtn.Attributes.Add("onClick", "return returnToParent('" + maLoaiDuToan + "')");
                
            }
        } 

------------------------Have fun & Good Luck ! :D------------------------------------------
  
 

Cấu trúc cơ bản của 1 PE file -PE file structure by diagramHồi ức SV BK-Miss BK

Comments

Unregistered user Tuesday, May 25, 2010 7:14:51 AM

nghia writes: Tôi đã làm thử như code của bạn mà ko thấy được,bạn có thể share code của bạn cho tôi xem được không?Thanks

Thanh BinhThanhBinhBlog Wednesday, May 26, 2010 5:02:48 PM

Bạn cứ làm y hệt là ổn mà smile

Unregistered user Tuesday, May 10, 2011 8:39:23 AM

Anonyme writes: bạn ơi, mình là gà mới buoc chan vào ASP.net ! ban có thể huong dan cu thể + hình hem ^^! neu dc way flim lai lun đi . cám ơn ban nhieu lém

Unregistered user Monday, December 5, 2011 1:39:55 AM

baggio writes: Ban cho minh xin tool Telerik duoc khong

Write a comment

New comments have been disabled for this post.