【问题标题】:sending data when clicking a row in GridView that redirects to another page单击 GridView 中重定向到另一个页面的行时发送数据
【发布时间】:2014-12-24 12:33:30
【问题描述】:

我正在做的是将照片插入数据库并上传到我的页面前面。 头版必须显示姓名和照片。 我正在从数据库中获取名称以及我在 UploadedItems 文件夹中拥有的所有照片

这是具有 GridView 的首页

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowHeader="False" Width="325px" OnRowDataBound="gvSearch_RowDataBound">
        <Columns>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Text") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Text") %>'></asp:Label>


                </ItemTemplate>
            </asp:TemplateField>
            <asp:ImageField DataImageUrlField="Value" ControlStyle-Height="100" ControlStyle-Width="100"  >
    <ControlStyle Height="100px" Width="100px"></ControlStyle>
            </asp:ImageField>

        </Columns>
    </asp:GridView>

这是我的代码:

    public partial class ListOfItems : System.Web.UI.Page{
    public string ItemImageName, fileName;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Username"] == null)
        {
            //Response.Redirect("Login.aspx?Data=" + "AddItem");
            //Response.Redirect("Login.aspx");

            Response.Cookies.Add(new HttpCookie("returnUrl", Request.Url.PathAndQuery));
            Response.Redirect("Login.aspx");

        }
        string[] filePaths = Directory.GetFiles(Server.MapPath("~/UploadedItems/"));
        List<ListItem> files = new List<ListItem>();
        foreach (string filePath in filePaths)
        {
            fileName = Path.GetFileName(filePath);

            DataSet ds = InsertClass.GetItemName(fileName);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                ItemImageName = row["ItemName"].ToString();
                files.Add(new ListItem(ItemImageName, "~/UploadedItems/" + fileName));
                //files.Add(new ListItem(ItemImageName, "~/UploadedItems/" + fileName));
            }
            GridView1.DataSource = files;
            GridView1.DataBind();
        }
    }

    protected void gvSearch_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("style", "cursor:pointer;");
            e.Row.Attributes.Add("onclick", "location='ItemPage.aspx?id=" +ItemImageName+ e.Row.Cells[0].Text + "'");

        }
    }
}

好的,让我先解释一下这门课中发生了什么,我会去 UploadedItems,然后我会在他们的照片中获取每张照片,然后我会使用他们的名字来查询我的数据库以及相关的 ItemName。现在我的问题是,当我按下照片时,它应该将我带到我按下的 gridView 中带有 ItemName 的页面,但它所做的是发送添加到 GridView 的最后一张图片的名称

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:
    foreach (DataRow row in ds.Tables[0].Rows) {
       ItemImageName = row["ItemName"].ToString();
       files.Add(new ListItem(ItemImageName,"~/UploadedItems/" + fileName));
       //files.Add(new ListItem(ItemImageName, "~/UploadedItems/" + fileName));
    }
    

    您对这个问题的解决方案就在这里:-

    每次使用 datarow 在数据集中循环时,您的 ItemImageName 都会获得一个更新的值,在最终循环中,您将从数据集中获取最后保存的图像名称,它是一个全局变量,您在 gridview rowdatabound 事件中为不同图像绑定相同的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-05
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2020-12-20
      相关资源
      最近更新 更多