0

私のaspxページでは、「ドラフトドキュメント」という値を選択するとドロップダウンリストが表示され、新しいDraftID(ID)が取得されます。このドロップダウン リストの下には、アップロード コントロールと、添付したときにファイルを表示する gridview があります。以下のクエリをグリッドビューのデータソースに使用しましたが、値 (_DraftId) に問題があります

var query = from at in _DataContext.tblAttachments
                where at.DraftID == _DraftId
                select at;

私はトップで使用していますが、それはnull_DraftId = (int)draft.DraftId;です。draft.DraftId = new int();実際、値を取得して変数で使用し、コードの別の場所で使用する方法がわかりません。

Tbldraft
DraftID BIGINT IDENTITY(1,1) PRIMARY KEY
FromEmailID 

Tblattachement:
 AttachmentID BIGINT  IDENTITY(1,1) PRIMARY KEY,
Draftid BIGINT NOT NULL REFERENCES tblDraft(DraftID),
FileName varchar(40)  NOT NULL,

Aspx.cs

  public partial class Draft : System.Web.UI.Page
  {
  private EDMSDataContext _DataContext;
  private int _DraftId;
  private string _filePath;
  private string _filename;
  private string _filename_Ext;

protected void Page_Load(object sender, EventArgs e)
{
}

protected void ddlDraft_SelectedIndexChanged(object sender, EventArgs e)
{
    _DataContext = new EDMSDataContext();
    if (ddlDraft.SelectedValue == "Draft Document")
    {

        tblDraft draft = new tblDraft();
        draft.DraftId = new int();
        _DraftId = (int)draft.DraftId;
        draft.FromEmailId = (Guid)Membership.GetUser().ProviderUserKey;

        _DataContext.tblDrafts.InsertOnSubmit(draft);
        _DataContext.SubmitChanges();
    }
}

protected void btnUpload_Click(object sender, EventArgs e)
{
    string filePath = FileUpload1.PostedFile.FileName;
    string fullAddress = Path.GetFullPath(filePath);
    _filePath = fullAddress;

    string filename = Path.GetFileName(filePath);

    _filename = filename.Split('.')[0];
    _filename_Ext = filename;

    string ext = Path.GetExtension(filename);

    string contenttype = String.Empty;


    //Set the contenttype based on File Extension

    switch (ext)
    {

        case ".doc":

            contenttype = "application/vnd.ms-word";

            break;

        case ".docx":

            contenttype = "application/vnd.ms-word";

            break;

        case ".xls":

            contenttype = "application/vnd.ms-excel";

            break;

        case ".xlsx":

            contenttype = "application/vnd.ms-excel";

            break;

        case ".jpg":

            contenttype = "image/jpg";

            break;

        case ".png":

            contenttype = "image/png";

            break;

        case ".gif":

            contenttype = "image/gif";

            break;

        case ".pdf":

            contenttype = "application/pdf";

            break;

    }

   // if (contenttype != String.Empty)
  //  {


        Stream fs = FileUpload1.PostedFile.InputStream;

        BinaryReader br = new BinaryReader(fs);

        Byte[] bytes = br.ReadBytes((Int32)fs.Length);
        //insert the file into database
 //   }

    tblAttachment attach = new tblAttachment();
    attach.DraftID = _DraftId;
    attach.FileName = filename;
    attach.ContentType = contenttype;
    attach.Data = bytes;
    attach.Exten = ext;
    _DataContext.tblAttachments.InsertOnSubmit(attach);
    _DataContext.SubmitChanges();
    //doctranscon.TransmitToConid = Convert.ToInt32(ddlTransmittaltoCon.SelectedValue);
    var query = from at in _DataContext.tblAttachments
                where at.DraftID == _DraftId
                select at;
    GridViewEfile.DataSource = query;
    GridViewEfile.DataBind();

}
}
4

1 に答える 1

0

ソースをざっと見てみると、メソッドを再配置して、の後SelectedIndexChangedに id を割り当てることをお勧めします ID が使用可能になるのは保存後です。それ以前は存在しません。SubmitChanges

protected void ddlDraft_SelectedIndexChanged(object sender, EventArgs e)
{
    _DataContext = new EDMSDataContext();
    if (ddlDraft.SelectedValue == "Draft Document")
    {

        tblDraft draft = new tblDraft();
        draft.FromEmailId = (Guid)Membership.GetUser().ProviderUserKey;
        _DataContext.tblDrafts.InsertOnSubmit(draft);
        _DataContext.SubmitChanges();
        _DraftId = (int)draft.DraftId;
    }
}

また、補足として、a) 上記のスニペットで何らかのエラー処理が役立つかどうか、および b) を格納するためのグローバル変数を置き換えるためのより良い解決策が見つからないかどうかを検討します_DraftId

HTH。

于 2013-01-01T19:45:09.847 に答える