Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期列表的id,它位于.cs文件中不可访问的另一个数据列表中_C#_Datalist - Fatal编程技术网

C# 日期列表的id,它位于.cs文件中不可访问的另一个数据列表中

C# 日期列表的id,它位于.cs文件中不可访问的另一个数据列表中,c#,datalist,C#,Datalist,我有一个datalist控件,它位于另一个datalist中。我需要访问.cs文件中一个datalist id的内部 这是我的两个数据列表 <asp:DataList ID="mydatalist" DataKeyField="sid" ItemStyle-CssClass="lft_c_down" runat="server"> <ItemTemplate> <div class="wholeC"> <d

我有一个datalist控件,它位于另一个datalist中。我需要访问.cs文件中一个datalist id的内部

这是我的两个数据列表

<asp:DataList ID="mydatalist" DataKeyField="sid" ItemStyle-CssClass="lft_c_down"  runat="server">
       <ItemTemplate>
        <div class="wholeC">
        <div class="ctop">
        <div class="lft_l">
        <div class="lft_l_top">
        <asp:Image ID="Image1" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem,"ipath")%>' Height="245px" Width="297px" />
        <br/>
        </div>

        </div>
        <div class="lft_r">

        <asp:Label ID="lbl_sid" Text='<%#DataBinder.Eval(Container.DataItem,"sid") %>' runat="server" Visible="false" />
        <b class="products" >Product Name:</b>
        <asp:Label ID="lbl2" Text='<%#DataBinder.Eval(Container.DataItem,"ipath") %>' runat="server" />
        <br/>
        <b class="products">Brand:</b>
        <asp:Label ID="lbl1" Text='<%#DataBinder.Eval(Container.DataItem,"brand") %>' runat="server" />
        <br/>

        </div>
        </div>
        <div class="cdown">
        <asp:TextBox ID="tb_cmt" runat="server" Height="35px" Width="500px" placeholder="comment.."  />
        <asp:Button ID="Button1"  runat="server" Text="Comment" backcolor="black" BorderStyle="None" Font-Names="Consolas" Font-Overline="False" 
        ForeColor="White" Height="34px" Width="108px" OnClick="cmt_Click" />


    <asp:DataList ID = "dl_cmt" runat="server">
        <ItemStyle CssClass="coment" />
        <ItemTemplate>
        <asp:Label ID="lblcmt" runat="server" Text='<%#Eval("ecomment")%>' />
        <asp:Label ID="lblDate" style=" color:brown; font-family:Cursive; font-size:x-small; " runat="server" Text='<%#Eval("my_date","on {0}") %>' />
        </ItemTemplate>
        </asp:DataList>
        <%--<asp:LinkButton ID="lb_showMore" runat="server">Show More</asp:LinkButton>--%>
        </div>
        </div>

        </ItemTemplate>
        </asp:DataList>
编辑

我有一个按钮点击事件,我想在其中调用
showcoment

 protected void cmt_Click(object sender, EventArgs e)
{

    //DateTime.Now.ToString();
    Button btn = (Button)sender;
    DataListItem dli = (DataListItem)btn.NamingContainer;
    TextBox tx = (TextBox)dli.FindControl("tb_cmt");
    Label lb = (Label)dli.FindControl("lbl_sid");
    string userid = Session["userid"].ToString();

    sq.connection();
    SqlCommand cmd = new SqlCommand("insert into comment(ecomment,sid,my_date,regid_cmt) values(@myecomment,@mysid,@mydate,@reg_id)", sq.con);
    cmd.Parameters.AddWithValue("@myecomment", tx.Text);
    cmd.Parameters.AddWithValue("@mysid", lb.Text);
    cmd.Parameters.AddWithValue("@mydate", DateTime.Now.ToString("h:mm, MMM  dd, yyyy"));
    cmd.Parameters.AddWithValue("@reg_id", userid);
    cmd.ExecuteNonQuery();
    sq.con.Dispose();
    sq.con.Close();
    tx.Text = "";

    //show_comment();



}
编辑:

这就是gstr获得其价值的方式

public partial class loggedin : System.Web.UI.Page
{
public string gstr;
sql_con sq = new sql_con();
protected void Page_Load(object sender, EventArgs e)
{
    string st = Session["email"].ToString();
    if (Page.IsPostBack)
    {
        hfm mymaster = (hfm)Page.Master;
        lcont lc = mymaster.getlcont();
        lc.myevent += delegate(string st2)
        {
            string str = st2;
            gstr = str;
            showdata();
            bind_menuitem();
            bindratingService();
            bindrating();
            show_comment();
            bindslide();
        };
    }
}

您需要在ItemDataBound或ItemCreated之类的对象上执行此操作,因为内部数据列表是外部列表中的一个项目:

protected void mydatalist_ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {
        DataList dl = e.Item.FindControl("dl_cmt") as DataList;

        string str = gstr;
        sq.connection();
        SqlCommand cmd = new SqlCommand("select top 4 * from comment where sid='" + str + "' order by my_date desc", sq.con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);

        dl.DataSource = ds;
        dl.DataBind();
    }
}
ASP.NET代码需要包含以下事件:

OnItemDataBound="mydatalist_ItemDataBound"
更新

要在按钮单击事件或单独方法中执行此操作,您应该能够执行以下操作:

protected void show_comment(object sender, EventArgs e)
{
    foreach(DataListItem item in mydatalist.Items)
    {
        int index = item.itemindex;

        DataList dl = (DataList) mydatalist.Items[index].FindControl("dl_cmt");

        string str = gstr;
        sq.connection();
        SqlCommand cmd = new SqlCommand("select top 4 * from comment where sid='" + str + "' order by my_date desc", sq.con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);

        dl.DataSource = ds;
        dl.DataBind();
    }
}
更新2

更新3

您还可以使用会话存储变量:

protected void Page_Load(object sender, EventArgs e)
{
    Session["gstr"] = //Your code to set gstr
}
按如下方式访问它:

string str = Session["gstr"].ToString();

你能告诉我如何在另一个函数中调用这个函数吗?问题是我想在button click event
cmt\u click
@user35上调用这个函数-你应该能够。如上所述,但不要使用DataLiistItemEventArgs访问内部列表,而是通过DataList dl=(DataList)mydatalist.item.FindControl(“dl_cmt”)访问列表<代码>数据列表dl=(数据列表)mydatalist.item.FindControl(“dl_cmt”)dosent work..我的意思是
FindControl()
无法识别第一件事是
dl
显示为null,第二件事是它进入无限循环为什么?@user35-dl在show\u comment()方法中显示为null,还是在ItemDataBound()方法中显示为null?
protected void Page_Load(object sender, EventArgs e)
{
    Session["gstr"] = //Your code to set gstr
}
string str = Session["gstr"].ToString();