0

在我的应用程序中,我们有一个 aspx 页面frmwebform1GetmyData()这个页面有一个调用助手类的静态方法HelperClass 但是代码的问题是当我们调用该方法时GetHelperData(),在这个助手类中实例化frmwebform1以获取它的方法FillGrid()。问题是当它实例化我们frmwebform1正在失去价值时。entityIdentityType

有什么方法可以在FillGrid()不实例化frmwebform1页面的情况下调用该方法。不幸的是,我不能将FillGrid()方法设为静态,因为它会损害我们的数据。

感谢您提前提供帮助。

//frmwebform1.aspx.cs
public partial class frmwebform1 : System.Web.UI.Page 
{
    string entityId;
    string entityType;

    protected void Page_Load(object sender, EventArgs e)
     {
       if (Request.QueryString["entityId"] != null)
         {
           entityType = Request.QueryString["entityType"].ToString().ToUpper();
           entityId = Request.QueryString["entityId"].ToString();       
         }
       if (!IsPostBack)
         {
           grdMygrid.DataSource = FillGrid();
           grdMygrid.DataBind();
         }
    }
        public  DataTable FillGrid()
            {
                string server = HttpContext.Current.Session["Server"].ToString();
                string database = HttpContext.Current.Session["Database"].ToString();
                string usrID =HttpContext.Current.Session["user_ID"].ToString();
                Data tr = new getData(server, database, usrID);
                DataTable dt = tr.getAllEntities(entityId);

                return dt;
            }

        [WebMethod]      //AJAX page method
            public static List<class1> GetmyData()
            {
                HelperClass helper = new HelperClass();
                return helper.GetHelperData();
            }

 }

//Second Class

 public class HelperClass
    {
        public  List<class1> GetHelperData()
        {
            frmwebform1 form1 = new frmwebform1();
            DataTable dt = form1.FillGrid();

            List<class1> list = new List<class1>();
            class1 item;

            foreach (DataRow dr in dt.Rows)
            {
                item = new TaxHistory();
                item.txr_guid = dr["txr_guid"].ToString();                
                item.Amount = string.Format("{0}", dr["Amount"]);
                item.Email = dr["EmailAddress"].ToString();
                item.Date = dr["date"].ToString();
                item.user = dr["user"].ToString();                

                list.Add(item);
            }

            return list;
        }
    }
4

4 回答 4

1

从 Page 类中提取该方法,因为它显然不应该存在,因为它似乎具有不同的职责:

我们如何确定对象在 OOP 中的职责?

创建一个静态类并将该方法放在那里。

于 2013-04-02T11:47:10.783 回答
0

将 FillGrid 方法设为静态。

于 2013-03-30T15:56:37.433 回答
0

而不是拥有从页面类中的数据库获取数据并从其他类调用它的方法并不是一件好事。如果您了解分层架构,则应该将该方法移至数据访问层并从页面方法调用该方法,这将返回您的 DataTable。

我希望这是有道理的:)

于 2013-04-02T12:38:06.493 回答
0

我使用了 Javascript 中的 PageMethods。这解决了我的问题。感谢您的所有回答。

于 2013-04-08T01:32:55.640 回答