1

以下のコードを使用して、ドロップダウン リストの読み込みと SelectedIndexChanged を行いました。ドロップダウン リストの値を変更すると、ページのラベルに値が表示されるまでに時間がかかります。

Label1.Text = "Review Number:" + newReview + "(for preparing of Rev." + newRev;


protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
    _DataContext = new EDMSDataContext();

    int newRev;
    int newReview;

    var x = ddlProjectDocument.SelectedValue;

    var MaxRev = (from rev in _DataContext.tblTransmittalls
                  where rev.DocID.ToString() == ddlProjectDocument.SelectedValue
                  select  rev.REV).Max();

    if (MaxRev == null)
    {
        newRev = 0;
    }
    else
    {
         newRev = Convert.ToInt32(MaxRev) + 1;
    }

    var MaxReview = (from rev in _DataContext.tblFiles
                     where (rev.DocId.ToString() == ddlProjectDocument.SelectedValue) &&
                           (rev.Rev.ToString() == MaxRev)
                     select rev.Review).Max();

    if (MaxReview == null)
    {
        newReview = 1;
    }
    else
    {
         newReview = Convert.ToInt32(MaxReview) + 1;
    }

    Label1.Text = "Review Number:" + newReview + "(for preparing of Rev." + newRev;       
}

protected void ddlProjectDocument_Load(object sender, EventArgs e)
{
    var query = from p in _DataContext.tblDocuments
                orderby p.DocumentNo
                select p;

    int maxs = 0;

    foreach (tblDocument v in query)
    {
        if (v.DocumentNo.Length > maxs)
            maxs = v.DocumentNo.Length;
    }

    foreach (tblDocument vv in query)
    {
        string doctitle = vv.DocumentNo;

        for (int i = vv.DocumentNo.Length; i < maxs ; i++)
        {
             doctitle += "&nbsp;";
        }

        doctitle += "&nbsp;|&nbsp;";
        doctitle += vv.TITLE;

        // Use HtmlDecode to correctly show the spaces
        doctitle = HttpUtility.HtmlDecode(doctitle);
        ddlProjectDocument.Items.Add(new ListItem(doctitle, vv.DocId.ToString()));
    }
}
4

1 に答える 1

0

次のコードを試してください。よりコンパクトに見えるようにリファクタリングし.ToString()、LINQ クエリから を削除して、不要なデータのプルダウンを回避しました。

protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
    using(_DataContext = new EDMSDataContext())
    {
        int x = Convert.ToInt32(ddlProjectDocument.SelectedValue);

        var MaxRev = _DataContext.tblTransmittalls.Where(rev => rev.DocID == x).Max(rev => rev.REV);     
        int newRev = (MaxRev == null) ? 0 : Convert.ToInt32(MaxRev) + 1;   

        var MaxReview = _DataContext.tblFiles.Where(rev => rev.DocId == x && rev.Rev == MaxRev).Max(rev => rev.Review);               
        int newReview = (MaxReview == null) ? newReview = 1 : Convert.ToInt32(MaxReview) + 1;    

        Label1.Text = "Review Number:" + newReview + "(for preparing of Rev." + newRev;       
    }
}

クエリをラムダ形式に変更し、DataContext も破棄しました。

于 2013-02-19T18:54:10.723 に答える