페이지간 게시중 여러가지 중에서

2.0 에서는 Page.PreviousPage 속성이 있따

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ko/dv_aspnetcon/html/fedf234e-b7c4-4644-a9e8-c1c0870b043b.htm

간단한 사용법

a.aspx 의 TextBox1 컨트롤의 데이터 값을 b.aspx 에서 엑세스 할수 있다

a.aspx

<asp:TextBox ID="TextBox1" runat="server" Height="100px" TextMode="MultiLine"                                           Width="569px"></asp:TextBox>

<asp:ImageButton ID="ImageButtonFreeView" runat="server" PostBackUrl="Preview.aspx" />

 
b.aspx
if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}

마스터 페이지 컨트롤에 접근할떄

ContentPlaceHolder 는 마스터페이지의 컨텐츠 영역입니다. 그 영역안에 있는 컨트롤 접근방법입니다 

if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
        {           
            if (PreviousPage.Master.FindControl("ContentPlaceHolder1") != null)
            {
                Response.Write(((TextBox)PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("TextBoxMyEmail")).Text);
            }
        }
        else
        {
            Response.Write("Not a cross page postback");
        } 
<html>
<script>
function dectectDotnet(){
 var ag = navigator.userAgent;
 if (ag.indexOf("IE") == -1){
    return false;
 }
 if (ag.indexOf("NET CLR") == -1){
    return false;
 }
 if (ag.indexOf("NET CLR 2") != -1){
    return true;
 }
}
</script> 



<body>
<script>
 var r = dectectDotnet();
 if (r != true){
  var a = confirm(".NET 2.0 런타임이 필요합니다.\r\n설치하시겠습니까?");
  if (a){
     window.open("http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=ko");
  }
 }
</script>
<body>
</html>

GridView 데이터 바인딩 각각의 Row 에 데이터 바인딩

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {

            System.Data.DataRowView drv = (System.Data.DataRowView)(e.Row.DataItem);
            int img_int = (int)drv["memo_read"];
            Control c = e.Row.FindControl("Image1");
            Control memoContent = e.Row.FindControl("LabelMemoContent");
            if (c != null)
            {
                if (img_int == 2)
                {
                    ((Image)c).ImageUrl = "img/img_16.jpg";
                }
                else {

                    ((Image)c).ImageUrl = "img/img_17.jpg";
                }              
            }

        }
    }

선택한 행의 데이터 키 값을 확인하는 방법 과 EditItemTemplate 에서 컨트롤의 값을 가져오기

(사용자작업일때)

다음 코드 예제에서는 DataKeys 속성을 사용하여 GridView 컨트롤에서 선택한 행의 데이터 키 값을 확인하는 방법을 보여 줍니다.

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {

 // 수정할려는 수정템플릿의 값을 가져오는 방법
        GridViewRow row = GridView1.Rows[e.RowIndex];

        TextBox CTextBoxbMove_url = (TextBox)row.FindControl("TextBoxbMove_url");

//GridView의 고유값을 가져오는 방법

//GridView 에서 DataKeyNames가 설정되어져있어야함

        int index = GridView1.SelectedIndex;

        Response.Write("e.Keys::: " + this.GridView1.DataKeys[e.RowIndex].Value );

//데이터베이스에 저장하기

    SqlConnection conn = new SqlConnection(AspxUtil.GetDBStr());
        conn.Open();
        SqlCommand comm = new SqlCommand("UPDATE SEARCH_BAR_TEXT_BANNER SET banner_text =@banner_text  ,move_url=@move_url WHERE IDX=@idx  ", conn);
        comm.Parameters.Add("@banner_text", SqlDbType.VarChar).Value = ((TextBox)row.FindControl("TextBoxbMove_url")).Text;
        comm.Parameters.Add("@move_url", SqlDbType.VarChar).Value = ((TextBox)row.FindControl("TextBoxbMove_url")).Text;
        comm.Parameters.Add("@idx", SqlDbType.Int).Value = this.GridView1.DataKeys[e.RowIndex].Value;
        comm.ExecuteNonQuery();

GridView1.DataBind();
        this.GridView1.EditIndex = -1;

    }

<asp:GridView ID="GridView1"

runat="server"

AutoGenerateColumns="False"              

DataKeyNames="idx"

OnRowUpdating="GridView1_RowUpdating"  

>

<asp:TemplateField HeaderText="banner_open" >

         <EditItemTemplate>
                    <asp:TextBox ID="TextBoxBanner_open" runat="server" Text='<%# Bind("banner_open") %>'></asp:TextBox>
         </EditItemTemplate>

<ItemTemplate>

리스트 뿌려줄때 그안에 속한 컨트롤 제어하기 DataBound

데이터가 바운드될때 dropDownList를 찾아서 데이터베이스에 저장된 값에 따라 셀렉트를 선택한다

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {       

     //데이터값 가져오기
           DataRowView dr = (DataRowView)e.Row.DataItem;   

       //DropDownListBanner_open 이름의 컨트롤 찾기
           DropDownList dl = (DropDownList)e.Row.FindControl("DropDownListBanner_open");

//만약컨트롤이 있다면 selected 시키자
           if (dl != null){             
               dl.SelectedIndex = (int)dr["banner_open"];
            }

        }

    }

RowCommand 에서 데이터 접근하기

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

            //컨트롤텍스트에 접근하기
            string m_id = this.GridView1.Rows[int.Parse(e.CommandArgument.ToString())].Cells[1].Text;

             //DataKeys 에 접근하기

            //Response.Write(this.GridView1.DataKeys[ int.Parse( e.CommandArgument.ToString() )  ].Value);

        }

<ItemTemplate>일때 접근방법

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

            ImageButton btn = ((ImageButton)e.CommandSource);
            int row_num = (int)((GridViewRow)btn.Parent.Parent).RowIndex;

        }
public partial class Sql_OracleDefault : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        OracleConnection conn = new OracleConnection("연결문자열");
        conn.Open();
        OracleCommand comm = new OracleCommand(this.TextBox1.Text, conn);
        OracleDataReader rs =   comm.ExecuteReader();
        DataTable dt =        rs.GetSchemaTable();
        this.TextBox2.Text = string.Empty;
        
            while (rs.Read() ) {
                 for (int ii = 0; ii < rs.FieldCount; ii++) {
						//rs.GetName(ii) 컬럼이름

                     this.TextBox2.Text +=  rs.GetName(ii) + ": " + rs[ii].ToString() + "\n ";
                   
                 }
                 this.TextBox2.Text += "---------------------------------------------";
                 this.TextBox2.Text += "\n";
             }
         
     

            conn.Close();
    }
}

1. 기본젝트 구성생성 (NewsAggregtor.Shell.csproj)

image

(같이 웹사이트도 생성)

CAL 관련 참조파일 참조

Bootstrapper.cs 생성

using Microsoft.Practices.Composite.UnityExtensions;
using Microsoft.Practices.Composite.Modularity;
namespace NewsAggregtor.Shell
{
    public class Bootstrapper :UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            Shell shell = new Shell();
            Application.Current.RootVisual = shell;
            return shell;
        }

        protected override IModuleCatalog GetModuleCatalog()
        {
            return base.GetModuleCatalog();
        }
    }
}

2.Shell.xaml 페이지 생성

App.xaml 페이지 수정

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //this.RootVisual = new Page();
            new Bootstrapper().Run();
        }

 

 

2.모듈구성 프로젝트 생성 (NewAggregtor.Digg.csproj)

image

CAL 관련 참조파일 참조

DiggModule.cs 파일 생성

using Microsoft.Practices.Composite.Modularity;


namespace NewsAggregtor.Digg
{
    public class DiggModule : IModule
    {

        #region IModule 멤버

        public void Initialize()
        {
           
        }

        #endregion
    }
}

-------------------------------------------------------------------------------------------------------------------

모듈프로젝트 생성후 NewsAggregtor.Shell.csproj 프로젝트에서

모듈프로젝트 참조

image

 

NewsAggregtor.Shell.csproj  에서

모듈관련 프로젝트 참조후 GetModuleCatalog() 메소드 모듈 로드로 수정

using Microsoft.Practices.Composite.UnityExtensions;
using Microsoft.Practices.Composite.Modularity;
namespace NewsAggregtor.Shell
{
    public class Bootstrapper :UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            Shell shell = new Shell();
            Application.Current.RootVisual = shell;
            return shell;
        }

        protected override IModuleCatalog GetModuleCatalog()
        {
            ModuleCatalog catalog = new ModuleCatalog();
            catalog.AddModule( typeof( NewsAggregtor.Digg.DiggModule) );
            return catalog;
        }
    }
}

실행해서 오류 안나면 일단 성공~

image

 

두번째 Createing a Modular

image

image

 

DiggSearchResult.xaml 페이지 추가

<UserControl x:Class="NewsAggregtor.Digg.DiggSearchResult"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock>DiggSearchResult</TextBlock>
    </Grid>
</UserControl>

DiggSearchResultView.xaml 페이지 추가

<UserControl x:Class="NewsAggregtor.Digg.DiggSearchResultView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock>DiggSearchResultView</TextBlock>
    </Grid>
</UserControl>

 

NewAggregtor.Digg.csproj 의 DiggModule.cs 수정

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Composite.Regions;
namespace NewsAggregtor.Digg
{
    public class DiggModule : IModule
    {

        #region IModule 멤버

        public void Initialize()
        {
            //Shell.xaml의 ResultRegion 이름을 찾아서 DiggSearchResultView.xaml 이 등록된다
            regionManager.RegisterViewWithRegion("ResultRegion", typeof(NewsAggregtor.Digg.DiggSearchResultView));
        }

        #endregion

        private IRegionManager regionManager;
        public DiggModule(IRegionManager regionManager )
        {
            this.regionManager = regionManager;
        }


    }
}

 

 

NewsAggregtor.Shell.csproj 의 Shell.xaml 파일수정

네임스페이스 추가

xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"

 

<UserControl xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"  x:Class="NewsAggregtor.Shell.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
    	<Grid.RowDefinitions>
    		<RowDefinition Height="0.197*"/>
    		<RowDefinition Height="0.803*"/>
    	</Grid.RowDefinitions>
        
        <ContentControl Regions:RegionManager.RegionName="searchRegion" Background="{x:Null}"/>
        <basics:TabControl Regions:RegionManager.RegionName="searchResult"></basics:TabControl>
    </Grid>
</UserControl>

 

모듈등록

일단 Shell.xaml 페이지에

xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"

추가하고

<ContentControl Regions:RegionManager.RegionName="searchRegion" Background="{x:Null}"/>
<basics:TabControl Regions:RegionManager.RegionName="ResultRegion"></basics:TabControl>

임의의 이름을 준다 나중에 모듈 올릴때 저 이름으로 찾아간다

 

image

잘 나타면 끗~

출처 : http://ko.wikipedia.org/wiki/JQuery#.EC.82.AC.EC.9A.A9.EB.B2.95

jQuery자바스크립트HTML 사이의 상호작용을 강조하는 경량화된 웹 애플리케이션 프레임워크이다. 존 레시그에 의해, 2006년 뉴욕 시 바캠프(Barcamp NYC)에서 릴리즈되었다.

jQuery는 MIT 라이선스GNU 일반 공중 사용 허가서듀얼 라이선스 하의 자유 오픈 소프트웨어이다.

목차

[숨기기]

[편집] 기능

jQuery는 다음과 같은 기능을 같고 있다:

  • DOM 엘리먼트 선택
  • DOM 트래버설 및 수정 (CSS 1-3 지원. 기본적인 XPath를 플러그인 형태로 지원)
  • 이벤트
  • CSS 조작.
  • 특수효과 및 애니메이션
  • Ajax
  • 확장성
  • 유틸리티 - 브라우저 버전, "each" 함수
  • 자바스크립트 플러그인

[편집] 사용법

jQuery는 한 개의 JavaScript 파일로 존재한다. 공통의 DOM, 이벤트, 특수 효과, Ajax 함수를 포함한다. 다음 코드를 쓰면, 웹 페이지로 포함시킬 수 있다:

<script type="text/javascript" src="path/to/jQuery.js"></script>

jQuery는 두 가지의 상호 작용 스타일을 갖고 있다:

  • $ 함수 이용. jQuery 오브젝트의 팩토리 메소드이다. 이 함수들은 "chainable"하다: 각각은 jQuery 오브젝트를 리턴한다.
  • $. -가 앞에 붙은 함수 이용. 이들 함수는 jQuery 오브젝트 그 자체와 연동되지는 않는다.

일반적으로 여러 개의 DOM 노드들을 조작하는 웍플로우는 $ 함수로 시작된다. CSS 셀렉터 스트링을 가지고 호출된다. 결과적으로 0개 혹은 그 이상의 HTML 페이지 내의 엘리먼트를 리퍼런스하는 jQuery 오브젝트가 리턴된다. 이 노드 집합들은 jQuery 오브젝트에 대해 인스턴스 메소드들을 적용함으로써 조작될 수 있다. 혹은 노드들 그 자체가 조작될 수 있다. 예를 들면 다음과 같다:

$("div.test").add("p.quote").addClass("blue").slideDown("slow");

div 태그가 달린 모든 엘리먼트를 찾되, 클래스 애트리뷰트가 test인 것을 찾는다. p 태그를 찾되, 클래스 애트리뷰트가 quote인 것을 찾는다. 찾아낸 각각의 엘리먼트에 대해 클래스 애트리뷰트 blue를 추가한다. 그 뒤 애니메이션 효과를 주어 아래쪽으로 슬라이드(미끄러지게) 시킨다. $add 함수는, 찾아낸(matched) 집합(set)에 영향을 준다. addClassslideDown는 리퍼런스된 노드들에 영향을 준다.

$.가 앞에 붙은 함수들은, 글로벌 프로퍼티나 비해이비어에 영향을 주는, 간편한(유틸리티) 메소드들이다. 예를 들면 다음과 같다:

$.each([1,2,3], function() {
  document.write(this + 1);
});

234 를 도큐먼트에 출력한다.

Ajax 루틴들은 $.ajax 및 관련 코드를 이용하여 수행할 수 있다. 이를 사용하여, 원격 데이터(remote data)를 로드하거나 조작할 수 있다.

$.ajax({
  type: "POST",
  url: "some.php",
  data: "name=John&location=Boston",
  success: function(msg){
    alert( "Data Saved: " + msg );
  }
});

… 파라미터 name=John, location=Boston을 주면서 some.php에 요청을 보낸다. 요청이 성공적으로 수행되었으면, 그 응답이 alert()된다.

 

 

Tutorials:How jQuery Works

http://docs.jquery.com/Tutorials:How_jQuery_Works#jQuery:_The_Basics

Problem

Typically, the user interface in a client application or Rich Internet Application (RIA) contains controls that display application domain data and allows users to modify and submit changes to the data. Defining application logic to control this process in the control's code-behind makes them complex and difficult to understand, maintain, evolve, test, and re-use.

Forces

Any of the following conditions justifies using the solution described in this pattern:

  • You want to maximize the code that can be tested with automation. (The user interface is hard to test automatically.)
  • You want to share code between pieces of the user interface (UI) that require the same underlying behavior.
  • You want to separate presentation and business logic from UI logic to make the code easier to understand and maintain.
  • You want to allow a user interface designer to easily create or modify the UI for your application; by doing this, developers can focus on the application's logic and structure.
  • The data that you want to display requires some form of conversion or adaptation before it can be displayed in the user interface.
  • The data that you want to display requires some form of validation before it can be updated by the user interface.

Solution

Separate the responsibilities for the visual display of the user interface and the presentation state and behavior into different classes named, respectively, the view and the presentation model. The view class manages the user interface controls and encapsulates any visual state or behavior that is specific to the UI. The presentation model class encapsulates presentation behavior and state and acts as a façade onto the underlying model. The view acts as an observer of the Presentation Model, and the Presentation Model acts as an observer of the Model. Figure 1 provides a logical view of the Presentation Model pattern.

Dd458863.PresentModelFig1(en-us,MSDN.10).png

Figure 1
Presentation Model pattern logical view

The presentation model should be designed to provide a public interface that can be easily consumed by a view, thereby reducing or eliminating the need for any complex code within the view for it to be able to interact cleanly with the presentation model. Specifically, the presentation model should be designed to support data binding, commands, and data templates.

Data Binding

By correctly designing the presentation model, developers can leverage the powerful data-binding capabilities provided by Windows Presentation Foundation (WPF) and Silverlight. With data binding, controls that are bound to application data automatically reflect changes when the underlying data changes its value. Similarly, data binding can automatically update the underlying data when the user modifies it in the user interface, such as if the user edits the value in a TextBox element, the underlying data value is automatically updated to reflect that change. In WPF and Silverlight, any dependency property of a control can be bound to a property on the presentation model.

To support data binding, the presentation model should implement the INotifyPropertyChanged interface. Similarly, any objects provided to the view through properties should support the INotifyPropertyChanged or INotifyCollectionChanged interfaces. Implementing these interfaces allows the data binding mechanism to monitor the presentation model for changes so that it can automatically update the UI. The presentation model is typically set as the data context for the view so that the binding expressions defined in the view resolve to the corresponding properties on the presentation model.

Dd458863.note(en-us,MSDN.10).gifNote:

For more information about data binding in WPF, see Data Binding on MSDN. For data binding in Silverlight, see Data Binding on MSDN.

Commands

Commands in WPF and Silverlight represent actions that the user can perform through the user interface, such as the user submitting the current order by clicking the Submit button or menu item. Commands separate the visual representation of an available action with the actual code that implements that action.

Commands allow the user interface to interact with the application's functionality in a declarative and automatic way without requiring any complex event handling code in the view's code-behind file. Interaction between the UI and the command is two-way. The command can be invoked as the user interacts with the UI, and the UI can be automatically updated as the underlying command becomes enabled or disabled.

WPF controls can be easily associated with a command through the Command property. The control will automatically invoke the target command when the user interacts with that control. Silverlight controls can use the Click.Command attached behavior that the Composite Application Library provides to achieve the same behavior for any control that derives from ButtonBase. Other control events can easily be supported by creating a suitable attached behavior for it. For more information, see "Extending Command Support" in the Commands technical concept.

The presentation model should encapsulate the implementation logic for commands so that it can be unit tested and more easily maintained. The presentation model should make commands available to the view by exposing them as ICommand valued properties. The Composite Application Library provides the DelegateCommand and CompositeCommand classes to make this easy to do. For more information, see the Commands technical concept.

Dd458863.note(en-us,MSDN.10).gifNote:

For more information about commands in WPF, see Commanding Overview on MSDN.

Data Templates

By using data templates, a visual designer can easily define how an object will be rendered in the user interface. A data template declares user interface controls that will be data bound at run time to the underlying object. The designer can dramatically modify or change the visual representation of an object without changing the underlying object.

In WPF, you can specify the data template for an object type at the application level—WPF automatically applies the data template for any objects of that type that are displayed in the UI. In Silverlight, you have to explicitly specify the data template for an object within the control that is to display it.

When you implement the Presentation Model pattern in a WPF or Silverlight application, you can define its view as a data template. Data templates are flexible and lightweight. UI designer can use them to easily define the visual representation of a presentation model without requiring any complex code. Data templates are ideally suited for views that do not require any UI logic (code-behind).

For more information about data templates, see Data Templating Overview.

Dd458863.note(en-us,MSDN.10).gifNote:

A variant of the Presentation Model pattern named Model-View-ViewModel is commonly used in WPF and Silverlight applications. For more information, see WPF Apps With The Model-View-ViewModel Design Pattern in MSDN magazine.

Example

To see an example implementation of the Presentation Model pattern, see the files WatchListPresentationModel.cs, WatchListView.xaml, and WatchListService.cs in the Stock Trader Reference Implementation (these files are located in the WatchList folder of the StockTraderRI.Modules.Watch project).

Liabilities

The Presentation Model pattern has the following liabilities:

  • There are more solution elements to manage.
  • You need a way to synchronize the view with the presentation model. Typically, this is done through data binding.
  • The model is not aware of the presentation model. Therefore, if the model is changed by any component other than the presentation model, the presentation model must be notified. Typically, notification is implemented with the Observer pattern. For more information about the Observer pattern, see Exploring the Observer Design Pattern.

Related Patterns

The following patterns are related to the Separated Presentation pattern:

  • Supervising Presenter. This pattern is similar to the Presentation Model pattern and is suitable for situations in which the view can be directly bound to the model. The presenter coordinates the interaction between the view and the model by interpreting user gestures into actions against the model and changes in the model into user interface actions.

More Information

For more information about the Presentation Model pattern, see the following:

For more information about software design patterns applied in the Composite Application Library and Stock Trader Reference Implementation, see Patterns in the Composite Application Library.

 

 

출처 : http://msdn.microsoft.com/en-us/library/dd458863.aspx

 

 

윈폼이나 asp.net 에서는 간단하게 dataview 등을 이용하면 간단( sort 이용)하게 정렬되는데

모바일에서는 DataView는 사용 되긴 되는데 정렬이 안된다 (나만그런가???)

그래서 허접하게 BindingSource 컨트롤을 사용해서 정렬했습니다.

 

        /// <summary>
        /// 무작위로 들어간 숫자를 정렬해줌
        /// </summary>
        /// <param name="_s"></param>
        /// <returns></returns>
        public static string[] SortedNumbers( string[] s){
           string[] ReloadNumbers = new string[8];

           
            DataTable dt = new DataTable("TempNumbers");
            dt.Columns.Add("NN", typeof(int));
            for (int i = 1; i < s.Length-1;i++)
            {
                DataRow row = dt.NewRow();
                row["NN"] = s[i];
                dt.Rows.Add(row);
            }
            BindingSource bs = new BindingSource();
            bs.DataSource = dt;
            
            bs.Sort = "NN asc ";

            IEnumerator ie = bs.GetEnumerator() as IEnumerator;

            ReloadNumbers[0] = s[0];
            int row_cnt = 1;
            while(ie.MoveNext()){

                DataRowView dv = ie.Current as DataRowView;
                string ss=  dv["NN"].ToString();
                ReloadNumbers[row_cnt] = ss;
                row_cnt++;
            }
            ReloadNumbers[7] = s[7];

            return ReloadNumbers;
        }

+ Recent posts