Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/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# 在一个链接按钮上绑定2个eval_C#_Asp.net - Fatal编程技术网

C# 在一个链接按钮上绑定2个eval

C# 在一个链接按钮上绑定2个eval,c#,asp.net,C#,Asp.net,我正在寻找一种方法,让我的两个评估在我的CS。第一根弦很好用,但另一根不行 这是我的aspx <asp:ListView ID="lvMaterialsList" runat="server" ondatabound="lvMaterialsList_DataBound" onpagepropertieschanging="lvMaterialsList_PagePropertiesChanging" OnItemCommand="lvMateri

我正在寻找一种方法,让我的两个评估在我的CS。第一根弦很好用,但另一根不行

这是我的aspx

<asp:ListView ID="lvMaterialsList" runat="server" ondatabound="lvMaterialsList_DataBound" 
                    onpagepropertieschanging="lvMaterialsList_PagePropertiesChanging" OnItemCommand="lvMaterialsList_ItemCommand">


                    <ItemTemplate>
                        <tr>      
                         <td>
                            <asp:Label ID="Label2" runat="server"  Text='<%# Eval("SupplierProduct")%> ' Visible="false"  /></td>
                                        <td>                         
                            <td>
                            <asp:Label ID="ltRefNo" runat="server"  Text='<%# Eval("ReqMatID") %>' Visible="false"  />
                             <%# Eval("SupplierProduct")%> 
                                        </td>
                                        <td>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("SupplierProductID") %>' width="1px" Visible="false" />
                                        </td>
                            <td><%# Eval("Quantity") %></td>
                            <td><asp:TextBox ID="txtAlloted" runat="server" type="number" Text=''
                                                class="form-control" width="60px" min='1'/></td>
                            <td><asp:LinkButton ID="btnUpdate" runat="server" OnClientClick='return confirm("Withdraw materials?")' CommandName="updateused">
                                                    <i class="fa fa-refresh"></i>&nbsp;</asp:LinkButton>                                               
                            </td>
                            <td><asp:Literal ID="ltUsed" runat="server" Text='<%# Eval("Used") %>'
                                                Visible="false" />
                                                 <%# Eval("Used")%>
                                                 </td>
                            <td><%# Eval("Status") %></td>
                            <td><%# Eval("DateAdded", "{0: MMMM dd, yyyy}") %></td>
                            <td><%# Eval("DateModified", "{0: MMMM dd, yyyy}") %></td>
                            <td>
                                <td>
                                    <asp:LinkButton Text="Additional" class="btn btn-primary " ID="lbtnUpdate" runat="server" CommandArgument='<%#Eval("ProjectID")+","+ Eval("ReqMatID")%>'
                                    PostBackUrl='<%# string.Format(" AdditionalAlloc.aspx?ID={0}&MID={1}", Eval("ProjectID"), Eval("ReqMatID"))%>'></asp:LinkButton>
                                     <asp:LinkButton Text="Add req" class="btn btn-primary " ID="lblAdd" runat="server" 
                                    PostBackUrl='<%# string.Format(" AddReq.aspx?ID={0}", Eval("ProjectID"))%>'></asp:LinkButton>

                               <a href='EditMaterial.aspx?ID=<%# Eval("ReqMatID") %>'><i class="fa fa-pencil"></i></a>&nbsp;
                              <%-- <a href='../Reports/SupplierDetails.aspx?ID=<%# Eval("SupplierID") %>'><i class="fa fa-print"></i></a>&nbsp;--%>
                               <a href='DeleteMaterial.aspx?ID=<%# Eval("ReqMatID") %>'" onclick='return confirm("Delete record?")'>
                                    <i class="fa fa-trash-o"></i>
                                </a>
                            </td>     
                        </tr>
                    </ItemTemplate>

                    <EmptyDataTemplate>
                        <tr>
                            <td colspan="12"><h2 class="text-center">No records found.</h2></td>


                            </td>
                        </tr>
                    </EmptyDataTemplate>
               </asp:ListView>
}

这就是我使用listview的方式

protected void lvMaterialsList_ItemCommand(object sender,     ListViewCommandEventArgs e)
{
    Label ltRefNo = (Label)e.Item.FindControl("ltRefNo");
    Label label1 = (Label)e.Item.FindControl("Label1");
    Label label2 = (Label)e.Item.FindControl("Label2");
    TextBox txtAlloted = (TextBox)e.Item.FindControl("txtAlloted");
    Literal ltUsed = (Literal)e.Item.FindControl("ltUsed");

    bool existingSupply = IsExisting();
    bool hasquantity = HasInventory(label1.Text);

    int alloted = Convert.ToInt32(txtAlloted.Text);
    int productid = Convert.ToInt32(label1.Text);
    string Label2 = label2.Text;

                var inventory = new DataTable();
                using (var da = new SqlDataAdapter("SELECT * FROM Inventory", con))
                {
                    da.Fill(inventory);
                }

                var products = new DataTable();
                using (var da = new SqlDataAdapter("SELECT * FROM SupplierProducts", con))
                {
                    da.Fill(products);
                }

    if (e.CommandName == "updateused")
    {
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;

        if (alloted < 0)
        {
            quantityCheck.Text = "cannot input negative number as quantity";
            Panel1.Visible = true;
            return;
        }

        int finalQuantity = Convert.ToInt32(inventory.Rows[0]["Quantity"]) - alloted;
        int criticalLevel = Convert.ToInt32(products.Rows[0]["CriticalLevel"]);

        bool isSafe = finalQuantity >= criticalLevel;

        string status = String.Empty;

        if (finalQuantity <= criticalLevel && finalQuantity != 0)
        {
            status = "Critical";
        }
        else if (finalQuantity > criticalLevel)
        {
            status = "Available";
        }
        else
        {
            status = "Unavailable";
        }

        if (existingSupply && hasquantity && isSafe)
        {
            cmd.CommandText = "UPDATE RequiredMaterials SET Used=Used + @Used, DateModified=@DateModified WHERE ReqMatID=@ReqMatID";

            cmd.Parameters.AddWithValue("@Used", alloted);
            cmd.Parameters.AddWithValue("@ReqMatID", ltRefNo.Text);
            cmd.Parameters.AddWithValue("@DateModified", DateTime.Now);
            cmd.ExecuteNonQuery();

            cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "UPDATE Inventory SET Quantity = Quantity - @Quantity, Status=@Status " +
                "WHERE ProductID=@ProductID";
            cmd.Parameters.AddWithValue("@Quantity", alloted);
            cmd.Parameters.AddWithValue("@ProductID", productid);
            cmd.Parameters.AddWithValue("@Status", status);
            cmd.ExecuteNonQuery();

            cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "INSERT INTO Withdraw VALUES (@ProjectID, @ProductID, @SupplierID, @Quantity,@UserID, @DateWithdrawn)";
            cmd.Parameters.AddWithValue("@ProjectID", ddlProjects.SelectedValue);
            cmd.Parameters.AddWithValue("@ProductID", productid);
            cmd.Parameters.AddWithValue("@SupplierID", DBNull.Value );
            cmd.Parameters.AddWithValue("@Quantity", alloted);
            cmd.Parameters.AddWithValue("@UserID", Session["userid"].ToString());
            cmd.Parameters.AddWithValue("@DateWithdrawn", DateTime.Now);
            cmd.ExecuteNonQuery();
            con.Close();

            GetMaterialsList();

        }

        else if (!isSafe)
        {
            quantityCheck.Text = Label2 + @" Inventory count will be lower than the critical level.";
            Panel1.Visible = true;
        }
        else 
        {
            Panel1.Visible = true;
            quantityCheck.Text = Label2 + " Cannot input inventory";            
        }      
    }      
}
受保护的void lvMaterialsList\u ItemCommand(对象发送方,ListViewCommandEventArgs e)
{
Label ltRefNo=(Label)e.Item.FindControl(“ltRefNo”);
label1=(Label)e.Item.FindControl(“label1”);
label2=(Label)e.Item.FindControl(“label2”);
TextBox txtalocated=(TextBox)e.Item.FindControl(“txtalocated”);
Literal ltUsed=(Literal)e.Item.FindControl(“ltUsed”);
bool existingSupply=IsExisting();
bool hasquantity=HasInventory(label1.Text);
int allocated=Convert.ToInt32(txtalocated.Text);
int productid=Convert.ToInt32(label1.Text);
字符串Label2=Label2.Text;
var inventory=新数据表();
使用(var da=new-SqlDataAdapter(“从清单中选择*,con))
{
da.填写(库存);
}
var products=新数据表();
使用(var da=new-SqlDataAdapter(“从供应商产品中选择*,con))
{
da.填充物(产品);
}
如果(e.CommandName==“updateused”)
{
con.Open();
SqlCommand cmd=新的SqlCommand();
cmd.Connection=con;
如果(分配<0)
{
quantityCheck.Text=“不能输入负数作为数量”;
面板1.可见=真实;
返回;
}
int finalQuantity=Convert.ToInt32(inventory.Rows[0][“数量”])-已分配;
int criticalLevel=Convert.ToInt32(products.Rows[0][“criticalLevel]”);
bool isSafe=最终数量>=关键级别;
字符串状态=string.Empty;
if(最终数量关键级别)
{
status=“可用”;
}
其他的
{
status=“不可用”;
}
if(现有供应量、数量和安全性)
{
cmd.CommandText=“更新所需材料集使用=使用+@Used,DateModified=@DateModified,其中ReqMatID=@ReqMatID”;
cmd.Parameters.AddWithValue(“@Used”,已分配);
cmd.Parameters.AddWithValue(“@ReqMatID”,ltRefNo.Text);
cmd.Parameters.AddWithValue(“@DateModified”,DateTime.Now);
cmd.ExecuteNonQuery();
cmd=newsqlcommand();
cmd.Connection=con;
cmd.CommandText=“更新库存集数量=数量-@数量,状态=@状态”+
“其中ProductID=@ProductID”;
cmd.Parameters.AddWithValue(“数量”,已分配);
cmd.Parameters.AddWithValue(“@ProductID”,ProductID);
cmd.Parameters.AddWithValue(“@Status”,Status);
cmd.ExecuteNonQuery();
cmd=newsqlcommand();
cmd.Connection=con;
cmd.CommandText=“插入提取值(@ProjectID、@ProductID、@SupplierID、@Quantity、@UserID、@dateRetracted)”;
cmd.Parameters.AddWithValue(“@ProjectID”,ddlProjects.SelectedValue);
cmd.Parameters.AddWithValue(“@ProductID”,ProductID);
cmd.Parameters.AddWithValue(“@SupplierID”,DBNull.Value);
cmd.Parameters.AddWithValue(“数量”,已分配);
cmd.Parameters.AddWithValue(“@UserID”,Session[“UserID”].ToString());
cmd.Parameters.AddWithValue(“@DateRetracted”,DateTime.Now);
cmd.ExecuteNonQuery();
con.Close();
GetMaterialsList();
}
否则,如果(!isSafe)
{
quantityCheck.Text=Label2+@“库存盘点将低于临界水平。”;
面板1.可见=真实;
}
其他的
{
面板1.可见=真实;
quantityCheck.Text=Label2+“无法输入库存”;
}      
}      
}
我不断得到一个错误:

对象引用未设置为对象的实例

我已经调试了系统,它显示:
将nvarchar值“\uu Page”转换为数据类型int时,转换失败。

因为表单本身上有
LinkButton
,而不在任何数据绑定控件内,所以当前代码将无法工作,因为
Eval
方法只能与数据绑定控件一起使用。现在,我真的不确定您是如何让
ProjectID
工作的。您应该始终避免使标记代码复杂化。如果您的代码隐藏文件中有所有内容,为什么要使事情复杂化?只需在代码隐藏文件中执行即可

标记(aspx页):-


由于表单本身上有
LinkButton
,而不在任何数据绑定控件内,因此当前代码将不起作用,因为
Eval
方法只能与数据绑定控件一起使用。现在,我真的不确定您是如何让
ProjectID
工作的。您应该始终避免使标记代码复杂化。如果您的代码隐藏文件中有所有内容,为什么要使事情复杂化?只需在代码隐藏文件中执行即可

标记(aspx页):-


出现错误时,请调试并检查行的位置。@KaushikMaheta。我已经调试了系统并编辑了question@gamered123,当您收到错误时,是哪一行?因为此错误是类型对话错误。为什么不使用like CommandArgument=''@KaushikMaheta。它没有具体说明,但它是inGetMaterials()。数据绑定当您得到错误时,请调试并检查行的位置。@KaushikMaheta。我已经调试了系统并编辑了question@gamered123,当您收到错误时,是哪一行?因为此错误是类型对话错误。为什么不使用like CommandArgument=''@KaushikMaheta。它没有具体说明,但它是inGetMaterials()。DatabindI只是把它放在一个databound控件中,但是我使用的代码仍然给出相同的结果errors@gamered123-哪个爸爸
protected void lvMaterialsList_ItemCommand(object sender,     ListViewCommandEventArgs e)
{
    Label ltRefNo = (Label)e.Item.FindControl("ltRefNo");
    Label label1 = (Label)e.Item.FindControl("Label1");
    Label label2 = (Label)e.Item.FindControl("Label2");
    TextBox txtAlloted = (TextBox)e.Item.FindControl("txtAlloted");
    Literal ltUsed = (Literal)e.Item.FindControl("ltUsed");

    bool existingSupply = IsExisting();
    bool hasquantity = HasInventory(label1.Text);

    int alloted = Convert.ToInt32(txtAlloted.Text);
    int productid = Convert.ToInt32(label1.Text);
    string Label2 = label2.Text;

                var inventory = new DataTable();
                using (var da = new SqlDataAdapter("SELECT * FROM Inventory", con))
                {
                    da.Fill(inventory);
                }

                var products = new DataTable();
                using (var da = new SqlDataAdapter("SELECT * FROM SupplierProducts", con))
                {
                    da.Fill(products);
                }

    if (e.CommandName == "updateused")
    {
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;

        if (alloted < 0)
        {
            quantityCheck.Text = "cannot input negative number as quantity";
            Panel1.Visible = true;
            return;
        }

        int finalQuantity = Convert.ToInt32(inventory.Rows[0]["Quantity"]) - alloted;
        int criticalLevel = Convert.ToInt32(products.Rows[0]["CriticalLevel"]);

        bool isSafe = finalQuantity >= criticalLevel;

        string status = String.Empty;

        if (finalQuantity <= criticalLevel && finalQuantity != 0)
        {
            status = "Critical";
        }
        else if (finalQuantity > criticalLevel)
        {
            status = "Available";
        }
        else
        {
            status = "Unavailable";
        }

        if (existingSupply && hasquantity && isSafe)
        {
            cmd.CommandText = "UPDATE RequiredMaterials SET Used=Used + @Used, DateModified=@DateModified WHERE ReqMatID=@ReqMatID";

            cmd.Parameters.AddWithValue("@Used", alloted);
            cmd.Parameters.AddWithValue("@ReqMatID", ltRefNo.Text);
            cmd.Parameters.AddWithValue("@DateModified", DateTime.Now);
            cmd.ExecuteNonQuery();

            cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "UPDATE Inventory SET Quantity = Quantity - @Quantity, Status=@Status " +
                "WHERE ProductID=@ProductID";
            cmd.Parameters.AddWithValue("@Quantity", alloted);
            cmd.Parameters.AddWithValue("@ProductID", productid);
            cmd.Parameters.AddWithValue("@Status", status);
            cmd.ExecuteNonQuery();

            cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "INSERT INTO Withdraw VALUES (@ProjectID, @ProductID, @SupplierID, @Quantity,@UserID, @DateWithdrawn)";
            cmd.Parameters.AddWithValue("@ProjectID", ddlProjects.SelectedValue);
            cmd.Parameters.AddWithValue("@ProductID", productid);
            cmd.Parameters.AddWithValue("@SupplierID", DBNull.Value );
            cmd.Parameters.AddWithValue("@Quantity", alloted);
            cmd.Parameters.AddWithValue("@UserID", Session["userid"].ToString());
            cmd.Parameters.AddWithValue("@DateWithdrawn", DateTime.Now);
            cmd.ExecuteNonQuery();
            con.Close();

            GetMaterialsList();

        }

        else if (!isSafe)
        {
            quantityCheck.Text = Label2 + @" Inventory count will be lower than the critical level.";
            Panel1.Visible = true;
        }
        else 
        {
            Panel1.Visible = true;
            quantityCheck.Text = Label2 + " Cannot input inventory";            
        }      
    }      
}
<asp:LinkButton ID="lbtnUpdate" Text="Additional" class="btn btn-primary"
     runat="server"></asp:LinkButton> 
lbtnUpdate.PostBackUrl = String.Format("AdditionalAlloc.aspx?ID={0}&MID={1}",
                                                           ProjectID,ReqMatID);