Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将函数转换为可从任何页面使用的类_C#_Asp.net_Function_Class - Fatal编程技术网

C# 如何将函数转换为可从任何页面使用的类

C# 如何将函数转换为可从任何页面使用的类,c#,asp.net,function,class,C#,Asp.net,Function,Class,我有以下功能,可从我的asp.net页面访问: /* QUERY TO RUN FROM ANY FUNCTION */ public void runQuery() { strMainSql = @"SELECT CT.OBJECTID 'Object ID' FROM HSI.RMOBJECTINSTANCE1224 CT WHERE CT.ACTIVESTATUS = 0 AND CT.OBJECTID = '" +

我有以下功能,可从我的asp.net页面访问:

/* QUERY TO RUN FROM ANY FUNCTION */
public void runQuery()
{
    strMainSql = @"SELECT
                CT.OBJECTID 'Object ID'
        FROM HSI.RMOBJECTINSTANCE1224 CT
        WHERE CT.ACTIVESTATUS = 0 AND CT.OBJECTID = '" + s + "'";

    using (SqlConnection scConn = new SqlConnection(strConn))
    {
        scConn.Open();
        using (SqlCommand scComm = new SqlCommand(strMainSql, scConn))
        {
            sdrRead = scComm.ExecuteReader();
            while (sdrRead.Read())
            {
                /* CAN BE USED IN OTHER PAGES */
                strTaskName = sdrRead[1].ToString();
                strTaskDetail = sdrRead[2].ToString();
                strTaskStartDate = sdrRead[3].ToString();
                strIdentifier = sdrRead[4].ToString();
                strStatus = sdrRead[5].ToString();
                strDueDate = sdrRead[6].ToString();
                strIssueDate = sdrRead[7].ToString();
                strCompleted = sdrRead[8].ToString();
                strNotes = sdrRead[9].ToString();
                strProvider = sdrRead[10].ToString();
                strService = sdrRead[11].ToString();
                strCheckedDate = sdrRead[12].ToString();
                strCheckedStatus = sdrRead[13].ToString();
                strCheckedUser = sdrRead[14].ToString();
                strClient = sdrRead[15].ToString();

                hfMemoID.Value = sdrRead[16].ToString();
                hfObjectID.Value = sdrRead[0].ToString();

                break;
            }
        }
    }
    /* SPECIFIC TO THE PAGE ONLY */
    lblUser.Text = strCheckedUser;
    lblDateTime.Text = strCheckedDate;
    lblTaskName.Text = strTaskName;
    lblClient.Text = strClient;
    lblID.Text = strIdentifier;
    lblSvc.Text = strService;
    lblProvider.Text = strProvider;
    lblStat.Text = strStatus;
    lblDueDate.Text = strDueDate;
    lblDetail.Text = strTaskDetail;
    lblTaskIssue.Text = strIssueDate;
    lblStartDate.Text = strTaskStartDate;
    lblCompleted.Text = strCompleted;
}

我的问题是,如果我必须在多个页面中使用上述功能,而不是拥有同一功能的多个副本,这可能会导致以后更新时出现问题,我如何将其自身放入一个类中,以便从任何页面调用它并从SQL查询中获取值?

您可以将查询结果作为属性公开,然后在ASPX页面中使用属性

    using System.Data.SqlClient;

    namespace MyNamespace
    {
        public class Task
        {

            public string strTaskName { get; set; }
            public string strTaskDetail { get; set; }
            public string strTaskStartDate { get; set; }
            public string strIdentifier { get; set; }
            public string strStatus { get; set; }
            public string strDueDate { get; set; }
            public string strIssueDate { get; set; }
            public string strCompleted { get; set; }
            public string strNotes { get; set; }
            public string strProvider { get; set; }
            public string strService { get; set; }
            public string strCheckedDate { get; set; }
            public string strCheckedStatus { get; set; }
            public string strCheckedUser { get; set; }
            public string strClient { get; set; }

            // you need to define properties for the appropriate datatype on these
            //hfMemoID
            //hfObjectID

            public string strConn { get; set; }

            public void Load(string objectid)
            {
                var strMainSql = @"SELECT
                    CT.OBJECTID 'Object ID'
            FROM HSI.RMOBJECTINSTANCE1224 CT
            WHERE CT.ACTIVESTATUS = 0 AND CT.OBJECTID = '" + objectid + "'";

                using (SqlConnection scConn = new SqlConnection(strConn))
                {
                    scConn.Open();
                    using (SqlCommand scComm = new SqlCommand(strMainSql, scConn))
                    {
                        var sdrRead = scComm.ExecuteReader();
                        while (sdrRead.Read())
                        {
                            /* CAN BE USED IN OTHER PAGES */
                            this.strTaskName = sdrRead[1].ToString();
                            this.strTaskDetail = sdrRead[2].ToString();
                            this.strTaskStartDate = sdrRead[3].ToString();
                            this.strIdentifier = sdrRead[4].ToString();
                            this.strStatus = sdrRead[5].ToString();
                            this.strDueDate = sdrRead[6].ToString();
                            this.strIssueDate = sdrRead[7].ToString();
                            this.strCompleted = sdrRead[8].ToString();
                            this.strNotes = sdrRead[9].ToString();
                            this.strProvider = sdrRead[10].ToString();
                            this.strService = sdrRead[11].ToString();
                            this.strCheckedDate = sdrRead[12].ToString();
                            this.strCheckedStatus = sdrRead[13].ToString();
                            this.strCheckedUser = sdrRead[14].ToString();
                            this.strClient = sdrRead[15].ToString();

                            // 
                            //hfMemoID.Value = sdrRead[16].ToString();
                            //hfObjectID.Value = sdrRead[0].ToString();

                            break;
                        }
                    }
                }
            }
        }
    }
在代码隐藏中,使用类加载数据,然后使用属性设置控件

    private MyNamespace.Task Task = new MyNamespace.Task();

    protected void Page_Load(object sender, EventArgs e)
    {

        Task.strConn = "my connection string.";
        Task.Load("task id to load");

        // set the value into the controls.
        lblUser.Text = Task.strCheckedUser;
        lblDateTime.Text = Task.strCheckedDate;
        lblTaskName.Text = Task.strTaskName;
        lblClient.Text = Task.strClient;
        lblID.Text = Task.strIdentifier;
        lblSvc.Text = Task.strService;
        lblProvider.Text = Task.strProvider;
        lblStat.Text = Task.strStatus;
        lblDueDate.Text = Task.strDueDate;
        lblDetail.Text = Task.strTaskDetail;
        lblTaskIssue.Text = Task.strIssueDate;
        lblStartDate.Text = Task.strTaskStartDate;
        lblCompleted.Text = Task.strCompleted;
    }

我不太清楚你在问什么。你把它放在另一个类中,然后从那里调用它有什么问题?你试过什么吗?当您在其他地方调用此页时,是否要更新此页上的控件,或者只是尝试运行查询并获取非页面特定的字符串?我只想获取我将转换为的“类”的查询结果。
lbl????
分配将在页面级别完成。这是嵌入到aspx页面还是aspx.cs代码隐藏文件中?它在我的aspx.cs文件中我需要
var任务
是全局的。我怎样才能做到呢?谢谢顺便说一句:)@SearchForKnowledge,你所说的“全局”是什么意思?需要分配
任务
变量,以便我可以分配它一次,并在页面中的任何位置使用它。因为如果我在加载页面中分配
var Task=new Task()
,我就不能在外部使用
Task
变量。@SearchForKnowledge,在这种情况下,只需将Task声明为类字段。我用这个更改更新了答案。谢谢。我会测试它,并接受你的答案,一旦我知道它是工作!