0

私が持っているのは、画像をアップロードし、そのパスを画像の優先順位でデータベースに保存するページです。これは単なる例です。データベースに5つの画像があり、優先度が次のようになっています

ID  ImageName  Description  Path  Priority
 1    1.jpg      Hello      xxxx   1
 2    2.jpg       hi        xxxx   2
 3    3.jpg       how       xxxx   3
 4    4.jpg       good      xxxx   4
 5    5.jpg       bye       xxxx   5

私のページには、ファイルをアップロードするファイルアップローダーコントロールと、優先度がデータベースから来る優先度のドロップダウンリストがあります。

今私の質問は、アップロードする画像を参照し、ドロップダウンリストから優先度を選択するときに、画像をその優先度に配置し、その画像の優先度を1ずつ増やすなどです。

画像番号6をアップロードして優先度3で保存したい場合、データベースは次のようになります

ID  ImageName  Description  Path  Priority
 1    1.jpg      Hello      xxxx   1
 2    2.jpg       hi        xxxx   2
 6    6.jpg       you       xxxx   3
 3    3.jpg       how       xxxx   4
 4    4.jpg       good      xxxx   5
 5    5.jpg       bye       xxxx   6

これは image.aspx.cs ファイルをアップロードするための私のコードです

protected void Page_Load(object sender, EventArgs e)
{
    AutoNumber(); 
}
public void AutoNumber()
{     
    con.Open();
    SqlCommand cmd = new SqlCommand("SELECT COUNT(Priority) as Tot FROM TestImages", con);
    SqlDataReader dr;

    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        int i = Convert.ToInt32(dr["tot"]);

        if (i > 0)
        {
            int j = i + 1;
            lblPriority.Text = "0" + j.ToString();

        }
        else
        {
            lblPriority.Text = "1";
        }

    }
    con.Close();
}
protected void btnSubmit_Click1(object sender, EventArgs e)
{
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["WebGallery"].ConnectionString;
    string Priority = lblPriority.Text.Trim();
    //Get Filename from fileupload control
    string imgName = fileuploadimages.FileName.ToString();
    //sets the image path
    string imgPath = "Images/"+""+ddlDepartment.SelectedValue+"/";
    bool IsExists = System.IO.Directory.Exists(Server.MapPath(imgPath));
    if (!IsExists)
        System.IO.Directory.CreateDirectory(Server.MapPath(imgPath));        
    //then save it to the Folder
    fileuploadimages.SaveAs(Server.MapPath(imgPath+imgName));
    //Open the database connection
    con.Open();
    //Query to insert images name and Description into database
    SqlCommand cmd = new SqlCommand("Insert into TestImages(ImageName,Description,Path,Priority) values(@ImageName,@Description,@Path,@Priority)" + "Update TestImages set Priority=Priority+1 where Priority='" + ddlPriority.SelectedValue + "'", con);
    //Passing parameters to query
    cmd.Parameters.AddWithValue("@ImageName", imgName);
    cmd.Parameters.AddWithValue("@Description", tbImageName.Text);
    cmd.Parameters.AddWithValue("@Path", imgPath + imgName);
    cmd.Parameters.AddWithValue("@Priority", lblPriority.Text);
    cmd.ExecuteNonQuery();
    //Close dbconnection
    con.Close();
    tbImageName.Text = string.Empty;     
}   
}

挿入と同様に更新してもエラーはありませんが、ドロップダウンリストから選択した優先度では挿入されず、最後に追加して優先度を更新します。

選択した優先度から画像を配置するにはどうすればよいですか よろしくお願いします

4

2 に答える 2

0

最後に私は私の答えを得ました

 protected void ChangePriority_Click(object sender, EventArgs e)
{
    //con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["WebGallery"].ConnectionString;
    string DepartmentID = ddlDepartment.SelectedValue;
    string Description = tbImageName.Text.Trim();
    //string Priority = lblPriority.Text.Trim();
    string Priority = ddlPriority.SelectedValue;
    //Get Filename from fileupload control
    string imgName = fileuploadimages.FileName.ToString();
    //sets the image path if exist then store image in that place else create one
    string imgPath = "Images/Departments/" + "" + ddlDepartment.SelectedValue + "/";
    bool IsExists = System.IO.Directory.Exists(Server.MapPath(imgPath));
    if (!IsExists)
        System.IO.Directory.CreateDirectory(Server.MapPath(imgPath));
    //then save it to the Folder
    fileuploadimages.SaveAs(Server.MapPath(imgPath + imgName));
    //Open the database connection
    con.Open();
    //Query to insert * into images into database

    SqlCommand cmd = new SqlCommand("Update Images set Priority=Priority+1 where Priority>='" + ddlPriority.SelectedValue + "'" + "Insert into Images(ImageName,Description,Path,Priority,DepartmentID) values(@ImageName,@Description,@Path,@Priority,@DepartmentID)", con);
    //Passing parameters to query
    cmd.Parameters.AddWithValue("@ImageName", imgName);
    cmd.Parameters.AddWithValue("@Description", Description);
    cmd.Parameters.AddWithValue("@Path", imgPath + imgName);
    cmd.Parameters.AddWithValue("@Priority", Priority);
    cmd.Parameters.AddWithValue("@DepartmentID", DepartmentID);
    cmd.ExecuteNonQuery();
    //Close dbconnection
    con.Close();
    tbImageName.Text = string.Empty;
   // Response.Redirect(Request.RawUrl);
}
于 2013-07-11T12:14:39.573 に答える