Click here to Skip to main content
15,923,789 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello everyone,

Am facing problem in gridview..

i have three columns in my grid.date,name and image.
I have to enter/select dynamically..so for date i have used calendar extender(Textbox) for name(Textbox) Image(ImageField).once if i enter date and name in textbox and am trying to upload an image using file upload the text is clearing..if i save and add new row images i have uploaded is clearing..and here iam saving images in one folder..if i run my application all images that i have selected before also am getting help me please how to solve my problem with kind heart...am a fresher don't mind if it is easy one..do help for me..am posting my code too..

Thanks in advance..


Source Code::

XML
<asp:GridView ID="Gridview1" runat="server" ShowFooter="True"
            AutoGenerateColumns="False"
          >
        <Columns>
        <asp:TemplateField HeaderText="Date">
            <ItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBox1" Format="dd/MM/yyyy">
                </asp:CalendarExtender>
            </ItemTemplate>
        </asp:TemplateField>

                        <asp:ImageField DataImageUrlField="Value" ControlStyle-Height="50" ControlStyle-Width="50"
                    HeaderText="Image">
                    <ControlStyle Height="50px" Width="50px"></ControlStyle>
                </asp:ImageField>



        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            </ItemTemplate>
             <FooterStyle HorizontalAlign="Right" />
            <FooterTemplate>
             <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />

            </FooterTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:GridView>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="btnUpload" runat="server" Text="Display" OnClick="Upload" />




Code::



DataTable dt = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
SetInitialRow();
filup();


}



}
private void SetInitialRow()
{
DataRow dr = null;
dt.Columns.Add(new DataColumn("Column1", typeof(string)));
dt.Columns.Add(new DataColumn("Column2", typeof(string)));
dt.Columns.Add("Value");
dr = dt.NewRow();
dr["Column1"] = string.Empty;
dr["Column2"] = string.Empty;
dt.Rows.Add(dr);
ViewState["CurrentTable"] = dt;

Gridview1.DataSource = dt;
Gridview1.DataBind();

}
private void AddNewRowToGrid()
{
int rowIndex =0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[0].FindControl("TextBox1");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox2");
Image img = (Image)Gridview1.Rows[rowIndex].Cells[2].FindControl("Value");
drCurrentRow = dtCurrentTable.NewRow();

dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text;
dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text;
dtCurrentTable.Rows[i - 1]["Value"] = ViewState["path"];

rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;

Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}

SetPreviousData();
}
private void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[0].FindControl("TextBox1");
TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox2");
Image img = (Image)Gridview1.Rows[rowIndex].Cells[2].FindControl("Value");
box1.Text = dt.Rows[i]["Column1"].ToString();
box2.Text = dt.Rows[i]["Column2"].ToString();
rowIndex++;
}

}
}

}
protected void ButtonAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();

}
protected void filup()
{
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Img1/"));
List<listitem> files = new List<listitem>();
foreach (string filePath in filePaths)
{
string fileName = Path.GetFileName(filePath);
files.Add(new ListItem(fileName, "~/Img1/" + fileName));
}

if (files.Count == 1)
{
Gridview1.DataSource = files;
Gridview1.DataBind();
}
}

protected void Upload(object sender, EventArgs e)
{


if (FileUpload1.HasFile)
{
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Img1/") + fileName);
Response.Redirect(Request.Url.AbsoluteUri);

ViewState["path"] = fileName;


}
}
Posted

1 solution

Image img = (Image)Gridview1.Rows[rowIndex].Cells[2].FindControl("Value");
img.imageurl=set value of database image path.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900