我使用asp.net和c#创建了学生详细信息。
我最近添加了图片字段,当我编辑细节,并编辑一些没有图像的字段(必要时编辑),然后提交..它显示"请上传您的图像"警惕。
所以我需要检查图像文件夹和文件上传中的图像是否为空。
这是我的代码:
代码隐藏:
protected void btnsub_Click(object sender, EventArgs e)
{
SqlConnection con = Connection.DBconnection();
if (Textid.Text.Trim().Length > 0)
{
SqlCommand com = new SqlCommand("StoredProcedure3", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@id", Textid.Text.Trim());
com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
try
{
string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
}
com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
com.ExecuteNonQuery();
}
catch (Exception ex)
{
btnsub.Text = ex.Message;
}
Response.Redirect("studententry.aspx");
}
else
{
SqlCommand com = new SqlCommand("StoredProcedure1", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
try
{
string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 1)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
}
com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
com.ExecuteNonQuery();
}
catch (Exception ex)
{
btnsub.Text = ex.Message;
}
Response.Redirect("studententry.aspx");
}
}
protected void btnrst_Click(object sender, EventArgs e)
{
Textid.Text = string.Empty;
Textusername.Text = string.Empty;
Textclass.Text = string.Empty;
Textsection.Text = string.Empty;
Textaddress.Text = string.Empty;
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
SqlConnection con = Connection.DBconnection();
if (e.CommandName == "EditRow")
{
GridViewRow gr = (GridViewRow)((Button)e.CommandSource).NamingContainer;
int index = gr.RowIndex;
hiddenfield.Value = index.ToString();
Textid.Text = gr.Cells[0].Text;
Textusername.Text = gr.Cells[1].Text;
Textclass.Text = gr.Cells[2].Text;
Textsection.Text = gr.Cells[3].Text;
Textaddress.Text = gr.Cells[4].Text;
Image1.ImageUrl = ((System.Web.UI.WebControls.Image)gr.Cells[5].Controls[0]).ImageUrl;
}
else if (e.CommandName == "Deleterow")
{
SqlCommand com = new SqlCommand("StoredProcedure4", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@ID", Convert.ToInt32(e.CommandArgument));
var id = Int32.Parse(e.CommandArgument.ToString());
com.ExecuteNonQuery();
Response.Redirect("studententry.aspx");
}
}
protected void GridView1_SelectedIndexChanged(Object sender, EventArgs e)
{
int index = GridView1.SelectedIndex;
hiddenfield.Value = index.ToString();
}
ASPX:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<center><div><h4>Student Registration</h4></div></center>
<div class="tblalign">
<table style="width: 100%;">
<tr>
<td><asp:HiddenField ID="hiddenfield" runat="server" />
<asp:TextBox ID="Textid" runat="server" Visible="false"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Name"></asp:Label>
</td>
<td>
</td>
<td>
<asp:TextBox ID="Textusername" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="Class"></asp:Label>
</td>
<td>
</td>
<td>
<asp:TextBox ID="Textclass" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Section"></asp:Label>
</td>
<td>
</td>
<td>
<asp:TextBox ID="Textsection" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="Address"></asp:Label>
</td>
<td>
</td>
<td>
<asp:TextBox ID="Textaddress" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="Image"></asp:Label>
</td>
<td>
</td>
<td>
<asp:Image ID="Image1" runat="server" ControlStyle-Width="50" ControlStyle-Height = "50" />
</td>
<td>
<asp:FileUpload ID="fileupload" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnsub" runat="server" Text="Submit" OnClick="btnsub_Click" OnClientClick="return register();" />
<asp:Button ID="btnrst" runat="server" Text="Reset" OnClick="btnrst_Click" />
</td>
<td>
</td>
<td>
</td>
</tr>
</table></div>
<br />
<br />
<center><div><h4>Student Records</h4></div></center><br /> <br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="SqlDataSource1"
OnRowCommand="GridView1_RowCommand"
EnablePersistedSelection="True" BackColor="White"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Class" HeaderText="Class" SortExpression="Class" />
<asp:BoundField DataField="Section" HeaderText="Section"
SortExpression="Section" />
<asp:BoundField DataField="Address" HeaderText="Address"
SortExpression="Address" />
<asp:ImageField DataImageUrlField="Image" HeaderText="Image" ControlStyle-Width="50" ControlStyle-Height = "50">
</asp:ImageField>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:Button runat="server" ID="btnedit" Text="Edit" CommandName="EditRow"></asp:Button>
</ItemTemplate>
<ControlStyle BorderColor="#CCFF66" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:Button runat="server" ID="btndelete" Text="Delete" CommandArgument='<%# Eval("Id") %>' CommandName="Deleterow"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<SelectedRowStyle BackColor="#FF66FF" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="StoredProcedure2"
SelectCommandType="StoredProcedure">
<DeleteParameters>
<asp:Parameter Name="ID" />
<asp:Parameter Name="Name" />
<asp:Parameter Name="Class" />
<asp:Parameter Name="Section" />
<asp:Parameter Name="Image" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="ID" />
<asp:Parameter Name="Name" />
<asp:Parameter Name="Class" />
<asp:Parameter Name="Section" />
<asp:Parameter Name="Image" />
</UpdateParameters>
</asp:SqlDataSource>
</asp:Content>
我认为在editrow命令中,我需要检查条件。其实我是.net。
的新手所以任何人都可以帮我解决这个问题。
任何帮助都将受到高度赞赏。
谢谢,
答案 0 :(得分:1)
要检查特定文件,请使用File.Exists(path)
,它将返回一个布尔值,指示路径中的文件是否存在。
System.IO.File.Exists(path)
由于您的代码是同步的,因此可以在将图像上传到文件夹后检查是否立即加载图像。例如:
try
{
string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
}
string imgAddress = Path.GetFileName(fileupload.PostedFile.FileName);
//check whether your image is created:
bool isExist=System.IO.File.Exists(imgAddress);
com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
com.ExecuteNonQuery();
}
catch (Exception ex)
{
btnsub.Text = ex.Message;
}
答案 1 :(得分:0)
filename = Path.GetFileName(fileupload.PostedFile.FileName);
var fullPath="~/Images/" + filename;
if (System.IO.File.Exists(Server.MapPath(fullPath)))
{
// file exist
}
else
{
// file not exist
}