Возможно ли получить требуемое значение из вида сетки на RowDataBound, когда пользователь выбирает строку - PullRequest
0 голосов
/ 11 августа 2011

Я хотел бы получить DeptID из выбранной строки. Я связываю вид сетки следующим образом

private void PopulateGridView()
{
    SqlConnection myConnection = new SqlConnection(ConnectionString);
    SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM tblEmp", myConnection);
    DataSet ds = new DataSet();
    ad.Fill(ds);
    dynamicGrid.DataSource = ds;
    dynamicGrid.DataBind();

}

Для применения цвета к выбранной строке я пишу следующим образом

protected void dynamicGrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if ((e.Row.RowType == DataControlRowType.DataRow))
        {

            e.Row.Attributes.Add("onclick", "javascript:ChangeRowColor('" + e.Row.ClientID + "')");

            // e.Row.Attributes.Add("onclick", "location='Default9.aspx?id=" + e.Row.Cells[0].Text + "'");
            //e.Row.Attributes["onClick"] = "location.href='Default8.aspx?id=" + DataBinder.Eval(e.Row.DataItem, "id") + "'";
        }
    }

Сценарий, который я использовал, выглядит следующим образом

<script type="text/javascript">
        //variable that will store the id of the last clicked row
        var previousRow;

        function ChangeRowColor(row)
        {
            //If last clicked row and the current clicked row are same
            if (previousRow == row)
                return;//do nothing
            //If there is row clicked earlier
            else if (previousRow != null)
                document.getElementById(previousRow).style.backgroundColor = "#ffffff";//change the color of the previous row back to white

            document.getElementById(row).style.backgroundColor = "#ffffda";//change the color of the current row to light yellow
            window.open("Default9.aspx");
            //assign the current row id to the previous row id for next row to be clicked
            previousRow = row;
        }
     </script>

Теперь я хотел бы получить deptid определенной строки, когда пользователь выбирает строку, может ли кто-нибудь мне помочь, а также как я могу передать это на следующую строку в скрипте, который я использовал

    **window.open("Default9.aspx");**

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Просто измените параметр ChangeColor следующим образом:

function ChangeRowColor(row,rowid)
{
   ...
}

и на стороне сервера измените JavaScript-код onclick:

//Get the value of specified cell
string DeptID = e.Row.Cells[0].Text; //change the index...

e.Row.Attributes.Add("onclick", "javascript:ChangeRowColor('" + e.Row.ClientID + "','"+ DeptID +"')");
0 голосов
/ 11 августа 2011

Попробуйте это в вашем RowDataBound

DataRowView drv = e.Row.DataItem as DataRowView;
    if ((e.Row.RowType == DataControlRowType.DataRow))
    {
        int iEmpID = Convert.ToInt32(drv["DeptID"]);
        e.Row.Attributes.Add("onclick", "javascript:ChangeRowColor('" + e.Row.ClientID + "','" + iEmpID + "')");
    }

и в javascript согласно Dev, указанному

0 голосов
/ 11 августа 2011

Ну, вы уже передаете rowID в свою функцию JavaScript, так почему бы не передать deptID одновременно?В функции ChangeRowColor вы можете иметь столько параметров, сколько захотите.

На стороне сервера вы можете получить deptID, выполнив следующие действия:

int deptID = (int)e.Row["deptID"]; //or maybe use Convert.ToInt32()

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...